jishushell 0.5.15 → 0.5.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 (97) hide show
  1. package/Dockerfile.hermes-slim +2 -5
  2. package/apps/filebrowser-container.yaml +1 -0
  3. package/apps/ollama-binary.yaml +44 -0
  4. package/apps/ollama-with-hollama-binary.yaml +45 -1
  5. package/dist/cli/doctor.js +144 -16
  6. package/dist/cli/doctor.js.map +1 -1
  7. package/dist/install.js +1 -1
  8. package/dist/install.js.map +1 -1
  9. package/dist/routes/instances.js +42 -5
  10. package/dist/routes/instances.js.map +1 -1
  11. package/dist/routes/llm.js +29 -0
  12. package/dist/routes/llm.js.map +1 -1
  13. package/dist/server.js +18 -4
  14. package/dist/server.js.map +1 -1
  15. package/dist/services/agent-apps/catalog.d.ts +3 -0
  16. package/dist/services/agent-apps/catalog.js +40 -13
  17. package/dist/services/agent-apps/catalog.js.map +1 -1
  18. package/dist/services/agent-apps/installers/shell-script.d.ts +1 -1
  19. package/dist/services/agent-apps/installers/shell-script.js +19 -2
  20. package/dist/services/agent-apps/installers/shell-script.js.map +1 -1
  21. package/dist/services/agent-apps/types.d.ts +3 -0
  22. package/dist/services/app/app-manager.d.ts +8 -0
  23. package/dist/services/app/app-manager.js +77 -3
  24. package/dist/services/app/app-manager.js.map +1 -1
  25. package/dist/services/app/openclaw-manager.js +17 -2
  26. package/dist/services/app/openclaw-manager.js.map +1 -1
  27. package/dist/services/backup-manager.js +43 -4
  28. package/dist/services/backup-manager.js.map +1 -1
  29. package/dist/services/capability-endpoint-validator.js +26 -7
  30. package/dist/services/capability-endpoint-validator.js.map +1 -1
  31. package/dist/services/instance-manager.js +89 -9
  32. package/dist/services/instance-manager.js.map +1 -1
  33. package/dist/services/llm-proxy/index.d.ts +28 -0
  34. package/dist/services/llm-proxy/index.js +76 -3
  35. package/dist/services/llm-proxy/index.js.map +1 -1
  36. package/dist/services/llm-proxy/validate-key.d.ts +41 -0
  37. package/dist/services/llm-proxy/validate-key.js +672 -0
  38. package/dist/services/llm-proxy/validate-key.js.map +1 -0
  39. package/dist/services/macos-launchd.d.ts +89 -0
  40. package/dist/services/macos-launchd.js +273 -0
  41. package/dist/services/macos-launchd.js.map +1 -0
  42. package/dist/services/nomad-manager.d.ts +7 -0
  43. package/dist/services/nomad-manager.js +290 -79
  44. package/dist/services/nomad-manager.js.map +1 -1
  45. package/dist/services/panel-manager.js +20 -10
  46. package/dist/services/panel-manager.js.map +1 -1
  47. package/dist/services/runtime/adapters/custom.js +56 -0
  48. package/dist/services/runtime/adapters/custom.js.map +1 -1
  49. package/dist/services/runtime/adapters/hermes.d.ts +4 -3
  50. package/dist/services/runtime/adapters/hermes.js +165 -63
  51. package/dist/services/runtime/adapters/hermes.js.map +1 -1
  52. package/dist/services/runtime/adapters/openclaw.d.ts +28 -0
  53. package/dist/services/runtime/adapters/openclaw.js +502 -4
  54. package/dist/services/runtime/adapters/openclaw.js.map +1 -1
  55. package/dist/services/setup-manager.js +97 -50
  56. package/dist/services/setup-manager.js.map +1 -1
  57. package/dist/services/update-manager.js +32 -14
  58. package/dist/services/update-manager.js.map +1 -1
  59. package/dist/types.d.ts +1 -0
  60. package/install/jishu-install.sh +247 -35
  61. package/install/jishu-uninstall.sh +45 -5
  62. package/package.json +5 -2
  63. package/public/assets/ApiKeyField-CvyAOcJS.js +1 -0
  64. package/public/assets/Dashboard-AuJESBlJ.js +1 -0
  65. package/public/assets/{HermesChatPanel-B_2HlVBQ.js → HermesChatPanel-CByPREwb.js} +1 -1
  66. package/public/assets/HermesConfigForm-DRda8FKX.js +4 -0
  67. package/public/assets/InitPassword-ka4wNpM5.js +1 -0
  68. package/public/assets/InstanceDetail-Cg1nS8HX.js +92 -0
  69. package/public/assets/Login-aPajuQzf.js +1 -0
  70. package/public/assets/NewInstance-Dd1ebNIx.js +1 -0
  71. package/public/assets/ProviderRecommendations-DFmADQ7V.js +1 -0
  72. package/public/assets/Settings-BYQnbLYL.js +1 -0
  73. package/public/assets/Setup-D05lwDOV.js +1 -0
  74. package/public/assets/WeixinLoginPanel-D89kdhP4.js +9 -0
  75. package/public/assets/index-HSXCsceK.css +1 -0
  76. package/public/assets/{index-BZc5zH7u.js → index-bnBu0nlQ.js} +7 -7
  77. package/public/assets/registry-C_qeFTkZ.js +2 -0
  78. package/public/assets/usePolling-Bn93fe7M.js +1 -0
  79. package/public/assets/{vendor-i18n-y9V7Sfuu.js → vendor-i18n-flxcMVeP.js} +2 -2
  80. package/public/assets/{vendor-react-BWrEVJVb.js → vendor-react-ZC5T_huj.js} +1 -1
  81. package/public/index.html +4 -4
  82. package/scripts/check-colima-launchd.mjs +230 -0
  83. package/public/assets/Dashboard-BdWPtroF.js +0 -1
  84. package/public/assets/HermesConfigForm-DVlhg3WV.js +0 -4
  85. package/public/assets/InitPassword-D7glTExX.js +0 -1
  86. package/public/assets/InstanceDetail-CxSy2cpe.js +0 -92
  87. package/public/assets/Login-Cfr5c2sv.js +0 -1
  88. package/public/assets/NewInstance-BIYDmJis.js +0 -1
  89. package/public/assets/ProviderRecommendations-BuRnvRcI.js +0 -1
  90. package/public/assets/Settings-Cc-tYBil.js +0 -1
  91. package/public/assets/Setup-lGZEk5jq.js +0 -1
  92. package/public/assets/WeixinLoginPanel-CoGqzxeV.js +0 -9
  93. package/public/assets/index-87IJXG-w.css +0 -1
  94. package/public/assets/input-paste-CrNVAyOy.js +0 -1
  95. package/public/assets/providers-DtNXh9JD.js +0 -1
  96. package/public/assets/registry-BWnkJgZ1.js +0 -2
  97. package/public/assets/usePolling-CwwT9KrC.js +0 -1
@@ -17,12 +17,37 @@ const __filename = fileURLToPath(import.meta.url);
17
17
  const CLI_PATH = join(dirname(__filename), "../cli.js");
18
18
  const UPDATE_STATE_FILE = join(JISHUSHELL_HOME, "update-state.json");
19
19
  const UPDATE_RESTART_TIMEOUT_MS = 5 * 60_000;
20
+ const DEFAULT_PROCESS_PATH_ENTRIES = [
21
+ "/opt/homebrew/bin",
22
+ "/opt/homebrew/sbin",
23
+ "/usr/local/bin",
24
+ "/usr/local/sbin",
25
+ "/usr/bin",
26
+ "/bin",
27
+ "/usr/sbin",
28
+ "/sbin",
29
+ ];
20
30
  // ── Internal helpers ───────────────────────────────────────────────────────
21
31
  let _updateCache = null;
22
32
  const UPDATE_CACHE_TTL = 30_000;
23
33
  function getNpmBinPath() {
24
34
  return join(dirname(process.execPath), "npm");
25
35
  }
36
+ function buildNodeProcessPath(basePath) {
37
+ return [dirname(process.execPath), basePath ?? "", ...DEFAULT_PROCESS_PATH_ENTRIES]
38
+ .flatMap((entry) => entry.split(":"))
39
+ .map((entry) => entry.trim())
40
+ .filter(Boolean)
41
+ .filter((entry, index, entries) => entries.indexOf(entry) === index)
42
+ .join(":");
43
+ }
44
+ function buildNodeProcessEnv(extraEnv = {}) {
45
+ return {
46
+ ...process.env,
47
+ ...extraEnv,
48
+ PATH: buildNodeProcessPath(process.env.PATH),
49
+ };
50
+ }
26
51
  function getCurrentPackageVersion() {
27
52
  try {
28
53
  const pkgPath = join(dirname(fileURLToPath(import.meta.url)), "../../package.json");
@@ -70,6 +95,7 @@ export function getInstalledGlobalVersion() {
70
95
  encoding: "utf-8",
71
96
  timeout: 5000,
72
97
  stdio: ["ignore", "pipe", "ignore"],
98
+ env: buildNodeProcessEnv(),
73
99
  }).trim();
74
100
  if (!npmRoot)
75
101
  return getCurrentPackageVersion();
@@ -121,10 +147,8 @@ export function startBackgroundUpgrade(info) {
121
147
  updatedAt: Date.now(),
122
148
  message: `Updating JishuShell to ${info.latestVersion}`,
123
149
  });
124
- const nodeBinDir = dirname(process.execPath);
125
150
  const childEnv = {
126
- ...process.env,
127
- PATH: `${nodeBinDir}${process.env.PATH ? `:${process.env.PATH}` : ""}`,
151
+ ...buildNodeProcessEnv(),
128
152
  JISHUSHELL_WEB_UPDATE: "1",
129
153
  JISHUSHELL_UPDATE_CURRENT_VERSION: info.currentVersion,
130
154
  JISHUSHELL_UPDATE_TARGET_VERSION: info.latestVersion,
@@ -208,7 +232,9 @@ function getNpmRegistryUrl() {
208
232
  return panelReg.trim().replace(/\/+$/, "");
209
233
  try {
210
234
  const reg = execFileSync(getNpmBinPath(), ["config", "get", "registry"], {
211
- encoding: "utf-8", timeout: 5000,
235
+ encoding: "utf-8",
236
+ timeout: 5000,
237
+ env: buildNodeProcessEnv(),
212
238
  }).trim();
213
239
  if (reg && reg !== "undefined")
214
240
  return reg.replace(/\/+$/, "");
@@ -263,12 +289,8 @@ export async function checkUpdate() {
263
289
  * Throws on failure; returns trimmed npm stdout on success.
264
290
  */
265
291
  export async function upgradePackage() {
266
- const nodeBinDir = dirname(process.execPath);
267
292
  const npmBin = getNpmBinPath();
268
- const childEnv = {
269
- ...process.env,
270
- PATH: `${nodeBinDir}${process.env.PATH ? `:${process.env.PATH}` : ""}`,
271
- };
293
+ const childEnv = buildNodeProcessEnv();
272
294
  // JISHU_RUNNING_IN_INSTALLER=1 tells post-install.sh it is managed by a
273
295
  // parent installer and should skip the interactive sudo / TTY checks,
274
296
  // do only the minimal wrapper+service update, then exit 0. This works
@@ -293,11 +315,7 @@ export async function upgradePackage() {
293
315
  * The spawned child outlives the current process (useful after upgrade).
294
316
  */
295
317
  export function scheduleRestart(delayMs = 2000) {
296
- const nodeBinDir = dirname(process.execPath);
297
- const childEnv = {
298
- ...process.env,
299
- PATH: `${nodeBinDir}${process.env.PATH ? `:${process.env.PATH}` : ""}`,
300
- };
318
+ const childEnv = buildNodeProcessEnv();
301
319
  const delaySecs = Math.max(1, Math.round(delayMs / 1000));
302
320
  const child = spawn("sh", ["-c", `sleep ${delaySecs} && exec ${JSON.stringify(process.execPath)} ${JSON.stringify(CLI_PATH)} restart`], { detached: true, stdio: "ignore", env: childEnv });
303
321
  child.unref();
@@ -1 +1 @@
1
- {"version":3,"file":"update-manager.js","sourceRoot":"","sources":["../../src/services/update-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-manager.js","sourceRoot":"","sources":["../../src/services/update-manager.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -411,6 +411,7 @@ export type AppLifecycleStep = {
411
411
  } | {
412
412
  downloadImage: string;
413
413
  timeout_ms?: number;
414
+ idle_timeout_ms?: number;
414
415
  } | {
415
416
  deleteImage: string;
416
417
  } | {
@@ -239,6 +239,9 @@ AUTO_YES="${AUTO_YES:-0}"
239
239
  DOCKER_CMD_PREFIX="" # Set to "sg docker -c" when group activated via sg
240
240
  DOCKER_GROUP_JUST_ADDED=0 # 1 if usermod was called this run
241
241
  DOCKER_USE_SUDO=0 # 1 if sudo docker should be used as fallback
242
+ ENABLE_AUTOLOGIN="${ENABLE_AUTOLOGIN:-0}" # opt-in: writes /etc/kcpassword
243
+ NO_AUTOLOGIN=0 # explicit --no-autologin override
244
+ AUTOLOGIN_PASSWORD="${AUTOLOGIN_PASSWORD:-}" # env-overridable; or --autologin-password
242
245
 
243
246
  PKG_UPDATED=0
244
247
 
@@ -1088,7 +1091,7 @@ install_docker() {
1088
1091
  local need_brew=0
1089
1092
  local need_profile=0
1090
1093
 
1091
- if ! command -v docker &>/dev/null || ! command -v colima &>/dev/null; then
1094
+ if [[ "$DOCKER_BIN_FOUND" != "1" || "$COLIMA_BIN_FOUND" != "1" ]]; then
1092
1095
  need_brew=1
1093
1096
  need_profile=1
1094
1097
  elif ! _colima list 2>/dev/null | grep -q "${_COLIMA_PROFILE}"; then
@@ -1104,8 +1107,8 @@ install_docker() {
1104
1107
  ui_info "Starting Colima VM (profile: ${_COLIMA_PROFILE})..."
1105
1108
  mkdir -p "${_COLIMA_HOME}"
1106
1109
  _colima start "${_COLIMA_PROFILE}" \
1107
- --vm-type vz --mount-type virtiofs \
1108
- --network-host-addresses --arch aarch64 \
1110
+ --vm-type "${COLIMA_VM_TYPE}" --mount-type virtiofs \
1111
+ --network-host-addresses --arch "${COLIMA_ARCH}" \
1109
1112
  --activate=false --cpu 2 --memory 4 --disk 60 >/dev/null \
1110
1113
  || { ui_warn "colima start failed — run 'COLIMA_HOME=${_COLIMA_HOME} colima start ${_COLIMA_PROFILE}' manually"; return 1; }
1111
1114
  export DOCKER_HOST="unix://${_COLIMA_SOCKET}"
@@ -1179,7 +1182,11 @@ install_docker() {
1179
1182
 
1180
1183
  _do_install_docker() {
1181
1184
  if [[ "$DRY_RUN" == "1" ]]; then
1182
- ui_info "[dry-run] Would install Docker via get.docker.com"
1185
+ if [[ "$OS" == "macos" ]]; then
1186
+ ui_info "[dry-run] Would install docker and colima via Homebrew"
1187
+ else
1188
+ ui_info "[dry-run] Would install Docker via get.docker.com"
1189
+ fi
1183
1190
  return 0
1184
1191
  fi
1185
1192
 
@@ -1194,8 +1201,8 @@ _do_install_docker() {
1194
1201
  mkdir -p "${_COLIMA_HOME}"
1195
1202
  ui_info "Starting Colima VM (profile: ${_COLIMA_PROFILE})..."
1196
1203
  _colima start "${_COLIMA_PROFILE}" \
1197
- --vm-type vz --mount-type virtiofs \
1198
- --network-host-addresses --arch aarch64 \
1204
+ --vm-type "${COLIMA_VM_TYPE}" --mount-type virtiofs \
1205
+ --network-host-addresses --arch "${COLIMA_ARCH}" \
1199
1206
  --activate=false --cpu 2 --memory 4 --disk 60 >/dev/null \
1200
1207
  || { ui_warn "colima start failed — run 'COLIMA_HOME=${_COLIMA_HOME} colima start ${_COLIMA_PROFILE}' manually"; return 1; }
1201
1208
  ui_success "Colima is running"
@@ -1357,12 +1364,12 @@ _ensure_docker_running() {
1357
1364
 
1358
1365
  if [[ "$OS" == "macos" ]]; then
1359
1366
  export DOCKER_HOST="unix://${_COLIMA_SOCKET}"
1360
- if ! docker info &>/dev/null 2>&1; then
1367
+ if ! _docker info &>/dev/null 2>&1; then
1361
1368
  ui_info "Starting Colima VM..."
1362
1369
  mkdir -p "${_COLIMA_HOME}"
1363
1370
  if ! _colima start "${_COLIMA_PROFILE}" \
1364
- --vm-type vz --mount-type virtiofs \
1365
- --network-host-addresses --arch aarch64 \
1371
+ --vm-type "${COLIMA_VM_TYPE}" --mount-type virtiofs \
1372
+ --network-host-addresses --arch "${COLIMA_ARCH}" \
1366
1373
  --activate=false --cpu 2 --memory 4 --disk 60 >/dev/null; then
1367
1374
  ui_warn "colima start failed"
1368
1375
  ui_info "Run manually: COLIMA_HOME=${_COLIMA_HOME} colima start ${_COLIMA_PROFILE}"
@@ -1371,7 +1378,7 @@ _ensure_docker_running() {
1371
1378
  fi
1372
1379
  local waited=0
1373
1380
  local timeout=120
1374
- while ! docker info &>/dev/null 2>&1; do
1381
+ while ! _docker info &>/dev/null 2>&1; do
1375
1382
  if [[ $waited -ge $timeout ]]; then
1376
1383
  ui_warn "Docker daemon did not become ready within ${timeout} seconds"
1377
1384
  ui_info "Run: COLIMA_HOME=${_COLIMA_HOME} colima status ${_COLIMA_PROFILE}"
@@ -1526,9 +1533,47 @@ docker_exec() {
1526
1533
  _COLIMA_HOME="${JISHUSHELL_HOME}/colima"
1527
1534
  _COLIMA_PROFILE="jishushell"
1528
1535
  _COLIMA_SOCKET="${_COLIMA_HOME}/${_COLIMA_PROFILE}/docker.sock"
1536
+ # jishushell on macOS supports Apple Silicon (arm64) ONLY. Fail fast on
1537
+ # Intel/other so third-party users get a clear message instead of an
1538
+ # obscure colima failure. NOTE: $OS is not set yet at script-load time
1539
+ # (detect_os runs later), so gate on `uname -s` directly, not $OS.
1540
+ if [[ "$(uname -s)" == "Darwin" ]]; then
1541
+ case "$(uname -m)" in
1542
+ arm64|aarch64) : ;;
1543
+ *)
1544
+ ui_error "jishushell on macOS supports Apple Silicon (arm64) only — detected $(uname -m). Installation aborted."
1545
+ exit 1
1546
+ ;;
1547
+ esac
1548
+ fi
1549
+ COLIMA_ARCH="aarch64"
1550
+ COLIMA_VM_TYPE="vz"
1551
+ # colima binary: prefer PATH, fall back to both Homebrew prefixes.
1552
+ COLIMA_BIN="$(command -v colima 2>/dev/null || true)"
1553
+ [[ -z "$COLIMA_BIN" && -x /opt/homebrew/bin/colima ]] && COLIMA_BIN="/opt/homebrew/bin/colima"
1554
+ [[ -z "$COLIMA_BIN" && -x /usr/local/bin/colima ]] && COLIMA_BIN="/usr/local/bin/colima"
1555
+ COLIMA_BIN_FOUND=1
1556
+ [[ -z "$COLIMA_BIN" ]] && COLIMA_BIN_FOUND=0 && COLIMA_BIN="colima"
1557
+ DOCKER_BIN="$(PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin${PATH:+:${PATH}}" command -v docker 2>/dev/null || true)"
1558
+ [[ -z "$DOCKER_BIN" && -x /opt/homebrew/bin/docker ]] && DOCKER_BIN="/opt/homebrew/bin/docker"
1559
+ [[ -z "$DOCKER_BIN" && -x /usr/local/bin/docker ]] && DOCKER_BIN="/usr/local/bin/docker"
1560
+ DOCKER_BIN_FOUND=1
1561
+ [[ -z "$DOCKER_BIN" ]] && DOCKER_BIN_FOUND=0 && DOCKER_BIN="docker"
1562
+ COLIMA_STD_PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin"
1529
1563
 
1530
1564
  _colima() {
1531
- COLIMA_HOME="${_COLIMA_HOME}" command colima "$@"
1565
+ # Use the resolved COLIMA_BIN path — non-interactive shells (launchd
1566
+ # wrappers, sshd) routinely lack /opt/homebrew/bin in PATH, so a bare
1567
+ # `command colima` falls back to "not found" even when colima is fully
1568
+ # installed at /opt/homebrew/bin/colima.
1569
+ PATH="${COLIMA_STD_PATH}${PATH:+:${PATH}}" \
1570
+ COLIMA_HOME="${_COLIMA_HOME}" \
1571
+ "${COLIMA_BIN:-colima}" "$@"
1572
+ }
1573
+
1574
+ _docker() {
1575
+ PATH="${COLIMA_STD_PATH}${PATH:+:${PATH}}" \
1576
+ "${DOCKER_BIN:-docker}" "$@"
1532
1577
  }
1533
1578
 
1534
1579
  # ─── 3. Nomad ────────────────────────────────────────────────────────────────
@@ -2073,6 +2118,9 @@ ${external_host_network_block}
2073
2118
  plugin "docker" {
2074
2119
  config {
2075
2120
  disable_log_collection = true
2121
+ gc {
2122
+ image = false
2123
+ }
2076
2124
  volumes {
2077
2125
  enabled = true
2078
2126
  }
@@ -2260,12 +2308,86 @@ WantedBy=multi-user.target"
2260
2308
  # Without this, after every Mac reboot the user has to run `colima start
2261
2309
  # jishushell` manually, and Nomad (started earlier by launchd) caches
2262
2310
  # docker.Healthy=False because docker is not yet reachable.
2311
+ # Wrapper invoked by the colima launchd plist. Serializes concurrent
2312
+ # starts, waits for the network, clears unclean-shutdown residue WITHOUT
2313
+ # deleting the VM, then retries `colima start` until the managed docker
2314
+ # socket answers. Mirrors _install_nomad_wait_docker_wrapper's style.
2315
+ _install_colima_wait_start_wrapper() {
2316
+ local wrapper="${JISHUSHELL_BIN_DIR}/colima-launchd-wrapper.sh"
2317
+ mkdir -p "${JISHUSHELL_BIN_DIR}"
2318
+ cat > "$wrapper" << WRAPPER
2319
+ #!/bin/bash
2320
+ # Auto-generated by jishu-install.sh — do not edit by hand.
2321
+ set -u
2322
+ export COLIMA_HOME="${_COLIMA_HOME}"
2323
+ export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
2324
+ COLIMA_BIN="${COLIMA_BIN}"
2325
+ PROFILE="${_COLIMA_PROFILE}"
2326
+ SOCK="${_COLIMA_SOCKET}"
2327
+ LOCKDIR="${_COLIMA_HOME}/.colima-launchd.lock.d"
2328
+
2329
+ # Ensure the colima home exists (launchd runs us at boot, independently).
2330
+ mkdir -p "\$COLIMA_HOME"
2331
+
2332
+ # Reclaim a stale lock orphaned by SIGKILL/power-cut (mkdir-lock has no
2333
+ # owner; rmdir only removes it if still empty — safe).
2334
+ [ -d "\$LOCKDIR" ] && find "\$LOCKDIR" -maxdepth 0 -type d -mmin +10 -exec rmdir {} \\; 2>/dev/null || true
2335
+
2336
+ # Single-flight via atomic mkdir (POSIX-atomic, dependency-free, stock macOS
2337
+ # compatible). If the lock dir already exists, another start is in progress —
2338
+ # exit 0.
2339
+ if ! mkdir "\$LOCKDIR" 2>/dev/null; then
2340
+ echo "[colima-wrapper] another start in progress; exiting" >&2
2341
+ exit 0
2342
+ fi
2343
+ trap 'rmdir "\$LOCKDIR" 2>/dev/null || true' EXIT
2344
+
2345
+ docker_ok() { DOCKER_HOST="unix://\$SOCK" /usr/bin/env docker info >/dev/null 2>&1; }
2346
+
2347
+ # Already up → idempotent no-op.
2348
+ if docker_ok; then echo "[colima-wrapper] docker already reachable" >&2; exit 0; fi
2349
+
2350
+ # Wait up to 60s for the network (--network-host-addresses needs en0 up).
2351
+ net_deadline=\$(( \$(date +%s) + 60 ))
2352
+ while ! /sbin/ifconfig en0 2>/dev/null | grep -q "inet "; do
2353
+ [ \$(date +%s) -ge \$net_deadline ] && break
2354
+ sleep 2
2355
+ done
2356
+
2357
+ # Unclean-shutdown residue: stop a half-broken VM, but NEVER delete it
2358
+ # (delete destroys the openclaw image and all VM data).
2359
+ status="\$("\$COLIMA_BIN" status "\$PROFILE" 2>&1 || true)"
2360
+ if echo "\$status" | grep -qiE 'broken|cannot|error'; then
2361
+ echo "[colima-wrapper] stale state detected; stopping (never deleting)" >&2
2362
+ "\$COLIMA_BIN" stop "\$PROFILE" >/dev/null 2>&1 || true
2363
+ fi
2364
+
2365
+ # Retry start with backoff until docker answers (~5 attempts).
2366
+ attempt=0
2367
+ while [ \$attempt -lt 5 ]; do
2368
+ # Refresh our own lock mtime each attempt so a long (>budget) legit
2369
+ # start is never reclaimed as stale by a concurrent launchd fire.
2370
+ touch "\$LOCKDIR" 2>/dev/null || true
2371
+ attempt=\$(( attempt + 1 ))
2372
+ echo "[colima-wrapper] colima start attempt \$attempt" >&2
2373
+ "\$COLIMA_BIN" start "\$PROFILE" \\
2374
+ --vm-type ${COLIMA_VM_TYPE} --mount-type virtiofs \\
2375
+ --network-host-addresses --arch ${COLIMA_ARCH} --activate=false \\
2376
+ --cpu 2 --memory 4 --disk 60 >/dev/null 2>&1 || true
2377
+ docker_ok && { echo "[colima-wrapper] docker reachable" >&2; exit 0; }
2378
+ sleep \$(( attempt * 10 ))
2379
+ done
2380
+ echo "[colima-wrapper] exhausted retries; docker still unreachable" >&2
2381
+ exit 1
2382
+ WRAPPER
2383
+ chmod 755 "$wrapper"
2384
+ echo "$wrapper"
2385
+ }
2386
+
2263
2387
  _install_colima_launchd() {
2264
2388
  local plist_label="com.jishushell.colima"
2265
2389
  local plist_path="${HOME}/Library/LaunchAgents/${plist_label}.plist"
2266
2390
  local log_path="${JISHUSHELL_HOME}/colima/colima-launchd.log"
2267
- local colima_bin
2268
- colima_bin="$(command -v colima 2>/dev/null || echo /opt/homebrew/bin/colima)"
2269
2391
 
2270
2392
  if [[ "$DRY_RUN" == "1" ]]; then
2271
2393
  ui_info "[dry-run] Would install launchd agent: ${plist_path}"
@@ -2274,12 +2396,9 @@ _install_colima_launchd() {
2274
2396
 
2275
2397
  mkdir -p "${HOME}/Library/LaunchAgents" "${JISHUSHELL_HOME}/colima"
2276
2398
 
2277
- # `colima start` exits cleanly once the VM is up, so KeepAlive must be
2278
- # false — otherwise launchd restarts colima start in an infinite loop.
2279
- # The flags here mirror the ones jishushell itself uses on first install
2280
- # (network-host-addresses + arch aarch64), so a relaunched VM gets the
2281
- # same network config; --activate=false keeps the user's docker context
2282
- # selection in ~/.docker/config.json untouched.
2399
+ local colima_wrapper
2400
+ colima_wrapper="$(_install_colima_wait_start_wrapper)"
2401
+
2283
2402
  cat > "$plist_path" << PLIST
2284
2403
  <?xml version="1.0" encoding="UTF-8"?>
2285
2404
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -2289,17 +2408,7 @@ _install_colima_launchd() {
2289
2408
  <string>${plist_label}</string>
2290
2409
  <key>ProgramArguments</key>
2291
2410
  <array>
2292
- <string>${colima_bin}</string>
2293
- <string>start</string>
2294
- <string>${_COLIMA_PROFILE}</string>
2295
- <string>--vm-type</string><string>vz</string>
2296
- <string>--mount-type</string><string>virtiofs</string>
2297
- <string>--network-host-addresses</string>
2298
- <string>--arch</string><string>aarch64</string>
2299
- <string>--activate=false</string>
2300
- <string>--cpu</string><string>2</string>
2301
- <string>--memory</string><string>4</string>
2302
- <string>--disk</string><string>60</string>
2411
+ <string>${colima_wrapper}</string>
2303
2412
  </array>
2304
2413
  <key>EnvironmentVariables</key>
2305
2414
  <dict>
@@ -2311,7 +2420,12 @@ _install_colima_launchd() {
2311
2420
  <key>RunAtLoad</key>
2312
2421
  <true/>
2313
2422
  <key>KeepAlive</key>
2314
- <false/>
2423
+ <dict>
2424
+ <key>SuccessfulExit</key>
2425
+ <false/>
2426
+ </dict>
2427
+ <key>ThrottleInterval</key>
2428
+ <integer>30</integer>
2315
2429
  <key>StandardOutPath</key>
2316
2430
  <string>${log_path}</string>
2317
2431
  <key>StandardErrorPath</key>
@@ -2322,7 +2436,7 @@ PLIST
2322
2436
 
2323
2437
  launchctl unload "$plist_path" 2>/dev/null || true
2324
2438
  if launchctl load -w "$plist_path" 2>/dev/null; then
2325
- ui_success "Colima launchd agent installed (auto-start at login)"
2439
+ ui_success "Colima launchd agent installed (self-retrying, auto-start at login)"
2326
2440
  else
2327
2441
  ui_warn "Could not load colima launchd agent"
2328
2442
  fi
@@ -3065,6 +3179,26 @@ install_jishushell_service() {
3065
3179
  local plist_label="com.jishushell.panel"
3066
3180
  local plist_path="${HOME}/Library/LaunchAgents/${plist_label}.plist"
3067
3181
 
3182
+ local panel_gate="${JISHUSHELL_BIN_DIR}/panel-launchd-wrapper.sh"
3183
+ mkdir -p "${JISHUSHELL_BIN_DIR}"
3184
+ cat > "$panel_gate" << PANELGATE
3185
+ #!/bin/bash
3186
+ set -u
3187
+ # Auto-generated by jishu-install.sh — do not edit by hand.
3188
+ # Lightweight 60s docker-readiness gate so the first post-reboot page
3189
+ # load doesn't flash "image missing". Panel self-heals afterward, so on
3190
+ # timeout we start anyway (the UI must be observable).
3191
+ PANEL_DOCKER_WAIT_DEADLINE=60
3192
+ export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
3193
+ deadline=\$(( \$(date +%s) + \$PANEL_DOCKER_WAIT_DEADLINE ))
3194
+ while ! DOCKER_HOST="unix://${_COLIMA_SOCKET}" /usr/bin/env docker info >/dev/null 2>&1; do
3195
+ [ \$(date +%s) -ge \$deadline ] && { echo "[panel-gate] docker not ready after 60s; starting anyway" >&2; break; }
3196
+ sleep 2
3197
+ done
3198
+ exec "${wrapper}" serve
3199
+ PANELGATE
3200
+ chmod 755 "$panel_gate"
3201
+
3068
3202
  mkdir -p "${HOME}/Library/LaunchAgents"
3069
3203
  cat > "$plist_path" << PLIST
3070
3204
  <?xml version="1.0" encoding="UTF-8"?>
@@ -3075,8 +3209,7 @@ install_jishushell_service() {
3075
3209
  <string>${plist_label}</string>
3076
3210
  <key>ProgramArguments</key>
3077
3211
  <array>
3078
- <string>${wrapper}</string>
3079
- <string>serve</string>
3212
+ <string>${panel_gate}</string>
3080
3213
  </array>
3081
3214
  <key>RunAtLoad</key>
3082
3215
  <true/>
@@ -3096,6 +3229,7 @@ PLIST
3096
3229
  else
3097
3230
  ui_warn "Could not load jishushell launchd agent"
3098
3231
  fi
3232
+ _enable_autologin
3099
3233
  return 0
3100
3234
  fi
3101
3235
 
@@ -3120,7 +3254,11 @@ Environment=HOME=${REAL_HOME}
3120
3254
  Environment=JISHUSHELL_HOME=${JISHUSHELL_HOME}
3121
3255
  ProtectSystem=strict
3122
3256
  PrivateTmp=true
3123
- ReadWritePaths=${JISHUSHELL_HOME} /etc/jishushell
3257
+ # /usr/local is whitelisted so app lifecycle scripts (e.g. ollama install.sh,
3258
+ # which writes /usr/local/bin/ollama and /usr/local/lib/ollama/) can succeed
3259
+ # even when the panel runs under ProtectSystem=strict. The rest of /usr stays
3260
+ # read-only.
3261
+ ReadWritePaths=${JISHUSHELL_HOME} /etc/jishushell /usr/local
3124
3262
 
3125
3263
  [Install]
3126
3264
  WantedBy=multi-user.target"
@@ -3296,6 +3434,69 @@ run_install_components() {
3296
3434
  return $has_error
3297
3435
  }
3298
3436
 
3437
+ # Opt-in macOS auto-login so headless boxes get a GUI (Aqua) session that
3438
+ # fires the colima/nomad/panel LaunchAgents after a reboot. Writes the
3439
+ # user's login password (kcpassword-obfuscated) to /etc/kcpassword — a
3440
+ # security-sensitive, explicitly-gated action. Skipped if FileVault is on
3441
+ # (mutually exclusive) and never run without consent.
3442
+ _enable_autologin() {
3443
+ [[ "$OS" != "macos" ]] && return 0
3444
+ if [[ "$NO_AUTOLOGIN" == "1" ]]; then
3445
+ ui_info "Auto-login skipped (--no-autologin)"
3446
+ return 0
3447
+ fi
3448
+ if [[ "$ENABLE_AUTOLOGIN" != "1" ]]; then
3449
+ ui_warn "Auto-login NOT enabled. On a headless Mac the LaunchAgents only"
3450
+ ui_warn "fire after a GUI login. Enable later with:"
3451
+ ui_warn " bash jishu-install.sh --run 6 --enable-autologin"
3452
+ return 0
3453
+ fi
3454
+ if fdesetup status 2>/dev/null | grep -q "FileVault is On"; then
3455
+ ui_warn "FileVault is ON — auto-login is incompatible and will be skipped."
3456
+ ui_warn "Disable FileVault or log in at the GUI after each reboot."
3457
+ return 0
3458
+ fi
3459
+
3460
+ local pw="$AUTOLOGIN_PASSWORD"
3461
+ if [[ -z "$pw" ]]; then
3462
+ if [[ "$AUTO_YES" == "1" ]]; then
3463
+ ui_warn "Auto-login requested but no password (use --autologin-password); skipping"
3464
+ return 0
3465
+ fi
3466
+ read -r -s -p "Login password for ${REAL_USER} (for auto-login, not stored in logs): " pw
3467
+ echo ""
3468
+ fi
3469
+ [[ -z "$pw" ]] && { ui_warn "Empty password; auto-login skipped"; return 0; }
3470
+
3471
+ if [[ "$DRY_RUN" == "1" ]]; then
3472
+ ui_info "[dry-run] Would set autoLoginUser=${REAL_USER} and write /etc/kcpassword"
3473
+ return 0
3474
+ fi
3475
+
3476
+ ${SUDO} defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser "${REAL_USER}"
3477
+
3478
+ # kcpassword cipher (classic 11-byte key, repeated). Password is XOR'd
3479
+ # byte-wise; the buffer is padded with cipher bytes to a multiple of 12,
3480
+ # adding a full 12-byte block when the length is already a multiple.
3481
+ local cipher=(0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F)
3482
+ local out="" i ch ck
3483
+ local len=${#pw}
3484
+ local total=$(( (len / 12 + 1) * 12 ))
3485
+ for (( i=0; i<total; i++ )); do
3486
+ ck=$(( cipher[i % 11] ))
3487
+ if (( i < len )); then
3488
+ printf -v ch '%d' "'${pw:i:1}"
3489
+ else
3490
+ ch=0
3491
+ fi
3492
+ out+=$(printf '\\x%02x' $(( ch ^ ck )))
3493
+ done
3494
+ ( umask 077; printf "%b" "$out" | ${SUDO} tee /etc/kcpassword >/dev/null )
3495
+ ${SUDO} chmod 600 /etc/kcpassword
3496
+ unset pw
3497
+ ui_success "Auto-login enabled for ${REAL_USER} (headless reboot will fire LaunchAgents)"
3498
+ }
3499
+
3299
3500
  # ═══════════════════════════════════════════════════════════════════════════════
3300
3501
  # Installer entry point — argument parsing, banner, main
3301
3502
  # ═══════════════════════════════════════════════════════════════════════════════
@@ -3366,6 +3567,12 @@ parse_args() {
3366
3567
  exit 1
3367
3568
  fi
3368
3569
  ;;
3570
+ --enable-autologin) ENABLE_AUTOLOGIN=1 ;;
3571
+ --no-autologin) NO_AUTOLOGIN=1 ;;
3572
+ --autologin-password)
3573
+ shift
3574
+ AUTOLOGIN_PASSWORD="${1:?--autologin-password requires a value}"
3575
+ ;;
3369
3576
  --yes|-y) AUTO_YES=1 ;;
3370
3577
  --help|-h) usage; exit 0 ;;
3371
3578
  *) ui_warn "Unknown argument: $1" ;;
@@ -3399,6 +3606,11 @@ Options:
3399
3606
  (e.g. --jishushell-version 0.4.9)
3400
3607
  --registry <url> Use a custom npm registry for all installs
3401
3608
  (e.g. --registry http://127.0.0.1:4873/)
3609
+ --enable-autologin Enable macOS auto-login (headless reboot support;
3610
+ writes /etc/kcpassword — security-sensitive, opt-in)
3611
+ --no-autologin Never configure auto-login (overrides --enable-autologin)
3612
+ --autologin-password <pw> Password for non-interactive auto-login setup
3613
+ (visible in 'ps'; prefer AUTOLOGIN_PASSWORD env var)
3402
3614
  --yes, -y Skip all confirmation prompts
3403
3615
  --help, -h Show this help message
3404
3616