@meridiona/meridian-darwin-arm64 1.27.1 → 1.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.27.1
1
+ 1.27.3
package/bin/meridian CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meridiona/meridian-darwin-arm64",
3
- "version": "1.27.1",
3
+ "version": "1.27.3",
4
4
  "description": "Prebuilt Meridian app for macOS arm64 (daemon binary + dashboard + Python services). Installed via @meridiona/meridian.",
5
5
  "homepage": "https://github.com/Meridiona/meridian",
6
6
  "repository": {
@@ -31,6 +31,14 @@
31
31
  <string>{{HELPER_BIN}}</string>
32
32
  </array>
33
33
 
34
+ <key>EnvironmentVariables</key>
35
+ <dict>
36
+ <key>HOME</key>
37
+ <string>{{HOME}}</string>
38
+ <key>PATH</key>
39
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
40
+ </dict>
41
+
34
42
  <key>StandardOutPath</key>
35
43
  <string>{{HOME}}/.meridian/logs/a11y-helper.log</string>
36
44
  <key>StandardErrorPath</key>
@@ -41,7 +49,7 @@
41
49
  <key>KeepAlive</key>
42
50
  <true/>
43
51
  <key>ThrottleInterval</key>
44
- <integer>10</integer>
52
+ <integer>30</integer>
45
53
  <key>ProcessType</key>
46
54
  <string>Background</string>
47
55
  </dict>
@@ -67,7 +67,7 @@
67
67
  <key>KeepAlive</key>
68
68
  <true/>
69
69
  <key>ThrottleInterval</key>
70
- <integer>10</integer>
70
+ <integer>30</integer>
71
71
  <key>ProcessType</key>
72
72
  <string>Background</string>
73
73
  </dict>
@@ -46,7 +46,7 @@
46
46
  <key>KeepAlive</key>
47
47
  <true/>
48
48
  <key>ThrottleInterval</key>
49
- <integer>10</integer>
49
+ <integer>30</integer>
50
50
  <key>ProcessType</key>
51
51
  <string>Background</string>
52
52
  </dict>
@@ -55,7 +55,7 @@
55
55
  <key>KeepAlive</key>
56
56
  <true/>
57
57
  <key>ThrottleInterval</key>
58
- <integer>10</integer>
58
+ <integer>30</integer>
59
59
  <key>ProcessType</key>
60
60
  <string>Background</string>
61
61
  </dict>
@@ -131,6 +131,13 @@ resolve_node_runtime() {
131
131
  local ver sha
132
132
  ver="$(grep '^NODE_RUNTIME_VERSION=' "${meta}" | cut -d= -f2 | tr -d '[:space:]')"
133
133
  sha="$(grep '^NODE_RUNTIME_SHA=' "${meta}" | cut -d= -f2 | tr -d '[:space:]')"
134
+ if [[ -z "${ver}" || -z "${sha}" ]]; then
135
+ warn "node-runtime.meta is malformed (missing VERSION or SHA) — falling back to system node"
136
+ for _n in /opt/homebrew/bin/node /usr/local/bin/node /usr/bin/node; do
137
+ [[ -x "${_n}" ]] && { echo "${_n}"; return 0; }
138
+ done
139
+ return 1
140
+ fi
134
141
  local cache_dir="${HOME}/.meridian/node-runtime/v${ver}"
135
142
  local cache_bin="${cache_dir}/bin/node"
136
143
  if [[ -x "${cache_bin}" ]]; then echo "${cache_bin}"; return 0; fi
@@ -405,8 +412,11 @@ _LOCK_HASH="$(shasum -a 256 "${APP_ROOT}/services/uv.lock" 2>/dev/null | cut -d'
405
412
  # enforces this); the venv MUST use exactly 3.11 or the cpython-311 .so files fail
406
413
  # to import. Prefer system python3.11, then uv-managed 3.11, then install it via uv.
407
414
  _extract_venv() {
408
- local tgz="$1" stamp_hash="$2" tarball_python="" py_dir=""
409
- rm -rf "${VENV}"
415
+ local tgz="$1" stamp_hash="$2" tarball_python="" py_dir="" venv_tmp=""
416
+ # Stage the new venv to a temp path; swap atomically only on success so a
417
+ # failed extraction (disk full, corrupt archive) never destroys the live venv.
418
+ venv_tmp="${VENV}.tmp.$$"
419
+ rm -rf "${venv_tmp}"
410
420
  if command -v python3.11 >/dev/null 2>&1; then
411
421
  tarball_python="$(command -v python3.11)"
412
422
  elif "${UV_BIN}" python find 3.11 >/dev/null 2>&1; then
@@ -416,13 +426,16 @@ _extract_venv() {
416
426
  "${UV_BIN}" python install 3.11
417
427
  tarball_python="$("${UV_BIN}" python find 3.11)"
418
428
  fi
419
- "${UV_BIN}" venv --python "${tarball_python}" "${VENV}" 2>/dev/null
420
- py_dir="$(ls "${VENV}/lib/" | grep '^python' | head -1)"
421
- mkdir -p "${VENV}/lib/${py_dir}/site-packages"
422
- tar -xzf "${tgz}" -C "${VENV}/lib/${py_dir}/site-packages"
429
+ "${UV_BIN}" venv --python "${tarball_python}" "${venv_tmp}" 2>/dev/null
430
+ py_dir="$(ls "${venv_tmp}/lib/" | grep '^python' | head -1)"
431
+ mkdir -p "${venv_tmp}/lib/${py_dir}/site-packages"
432
+ tar -xzf "${tgz}" -C "${venv_tmp}/lib/${py_dir}/site-packages"
423
433
  # Install the local editable package (meridian-agents) — no deps needed,
424
434
  # everything is already in site-packages from the tarball.
425
- "${UV_BIN}" pip install --quiet --no-deps --python "${VENV}/bin/python" -e "${APP_ROOT}/services"
435
+ "${UV_BIN}" pip install --quiet --no-deps --python "${venv_tmp}/bin/python" -e "${APP_ROOT}/services"
436
+ # All steps succeeded — atomically replace the live venv.
437
+ rm -rf "${VENV}"
438
+ mv "${venv_tmp}" "${VENV}"
426
439
  printf '%s\n' "${stamp_hash}" > "${VENV_STAMP}"
427
440
  ok "Python services ready ($(${VENV}/bin/python --version 2>&1))"
428
441
  }
@@ -544,6 +557,8 @@ elif [[ -d "${APP_ROOT}/ui" ]]; then
544
557
  # ui/ was preserved by meridian-npm-setup.sh — hash matched, no re-extraction needed
545
558
  ok "dashboard unchanged — reusing existing build"
546
559
  _ui_changed=0
560
+ else
561
+ err "Dashboard bundle missing: neither ui.tar.gz nor ui/ found in ${APP_ROOT}. Re-run the installer."
547
562
  fi
548
563
 
549
564
  # ── 6. Daemons — restart only what changed ───────────────────────────────────
@@ -600,7 +615,7 @@ _final_ui_hash="${_new_ui_hash:-${_OLD_UI_HASH}}"
600
615
  {
601
616
  [[ -n "${_new_daemon_hash}" ]] && printf 'daemon_bin=%s\n' "${_new_daemon_hash}"
602
617
  [[ -n "${_final_ui_hash}" ]] && printf 'ui_tarball=%s\n' "${_final_ui_hash}"
603
- } > "${_HASH_FILE}"
618
+ } > "${_HASH_FILE}.tmp" && mv "${_HASH_FILE}.tmp" "${_HASH_FILE}"
604
619
 
605
620
  ok "all daemons installed"
606
621
 
@@ -608,8 +623,12 @@ ok "all daemons installed"
608
623
  _skill_src="${APP_ROOT}/services/skills/coding-agent/session-summary/SKILL.md"
609
624
  _skill_dst="${HOME}/.claude/commands/session-summary.md"
610
625
  mkdir -p "${HOME}/.claude/commands"
611
- cp "${_skill_src}" "${_skill_dst}"
612
- ok "session-summary command → ~/.claude/commands/session-summary.md"
626
+ if [[ -f "${_skill_src}" ]]; then
627
+ cp "${_skill_src}" "${_skill_dst}"
628
+ ok "session-summary command → ~/.claude/commands/session-summary.md"
629
+ else
630
+ warn "session-summary skill not found in bundle (${_skill_src}) — skipping"
631
+ fi
613
632
 
614
633
  # Pipeline smoke test — verify both LLM stages return valid output (no DB writes).
615
634
  echo ""
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.27.1"
7
+ version = "1.27.3"
8
8
  description = "Meridian agents — hermes task linking and Jira progress updates for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]
package/ui.tar.gz DELETED
Binary file