@meridiona/meridian-darwin-arm64 1.27.6 → 1.28.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.
package/.env.example CHANGED
@@ -120,6 +120,23 @@
120
120
  # Confident AI key for the classifier eval harness (services/tests/evals only).
121
121
  # CONFIDENT_API_KEY=
122
122
 
123
+ # ---------------------------------------------------------------------------
124
+ # Coding-agent ingest (optional — all defaults are correct on a stock machine)
125
+ # ---------------------------------------------------------------------------
126
+
127
+ # Let the daemon install the cursor-agent CLI when a Cursor session needs
128
+ # summarising and the CLI is missing. The installer is unpinned remote code
129
+ # (curl https://cursor.com/install | bash), so this is an explicit opt-in;
130
+ # when off, Cursor summaries fall back to the local MLX model.
131
+ # CURSOR_AGENT_AUTO_INSTALL=0
132
+
133
+ # Source-store location overrides (only needed for non-standard installs).
134
+ # COPILOT_SESSION_STATE_DIR=~/.copilot/session-state
135
+ # VSCODE_USER_DIR=~/Library/Application Support/Code/User
136
+ # CURSOR_STATE_VSCDB=~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
137
+ # CURSOR_CLI_CHATS_DIR=~/.cursor/chats
138
+ # ANTIGRAVITY_APP_DIR=~/Library/Application Support/Antigravity
139
+
123
140
  # ---------------------------------------------------------------------------
124
141
  # OpenObserve / OpenTelemetry (optional — enables distributed tracing and
125
142
  # structured log ingestion into a local OpenObserve instance)
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.27.6
1
+ 1.28.1
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.6",
3
+ "version": "1.28.1",
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": {
@@ -623,6 +623,40 @@ else
623
623
  bash "${APP_ROOT}/scripts/install-daemon.sh" || warn "daemon agent install failed"
624
624
  fi
625
625
 
626
+ # Claude Code SessionEnd hook: seals each Claude session into app_sessions the
627
+ # instant it ends (the indexer sweep + 1 h idle seal are only the fallback).
628
+ # Idempotent merge into ~/.claude/settings.json; also purges retired Python
629
+ # hook entries on upgrade. Pin the binary to the installed bundle copy.
630
+ info "Installing Claude Code coding-agent SessionEnd hook…"
631
+ if MERIDIAN_BIN="${APP_ROOT}/bin/meridian" bash "${APP_ROOT}/services/scripts/install-claude-hook.sh" >/dev/null 2>&1; then
632
+ ok "Claude Code SessionEnd hook installed"
633
+ else
634
+ warn "coding-agent hook install skipped (Claude sessions still seal via the idle backstop)"
635
+ fi
636
+
637
+ # Coding-agent summariser engines (informational): each agent's sessions are
638
+ # summarised by its OWN CLI when present; a missing CLI is never fatal — those
639
+ # sessions fall back to the local MLX model. Surface what the daemon will use
640
+ # so users know why a summary came from MLX. `meridian doctor` re-checks all
641
+ # of this any time.
642
+ info "Coding-agent summariser engines:"
643
+ for _eng in claude codex copilot; do
644
+ if command -v "${_eng}" >/dev/null 2>&1; then
645
+ ok "${_eng} CLI found — those sessions summarise natively"
646
+ else
647
+ info " ${_eng} CLI not found — those sessions will use the local model (MLX)"
648
+ fi
649
+ done
650
+ if command -v cursor >/dev/null 2>&1 || [[ -d "${HOME}/Library/Application Support/Cursor" ]]; then
651
+ if command -v cursor-agent >/dev/null 2>&1; then
652
+ ok "cursor-agent CLI found — verify auth with: cursor-agent status"
653
+ else
654
+ info " Cursor detected but the cursor-agent CLI is missing — Cursor summaries will use the local model (MLX)."
655
+ info " To summarise with Cursor's own CLI: curl https://cursor.com/install -fsS | bash then: cursor-agent login"
656
+ info " Or let the daemon install it on demand: add CURSOR_AGENT_AUTO_INSTALL=1 to ${HOME}/.meridian/app/.env"
657
+ fi
658
+ fi
659
+
626
660
  # UI: skip daemon restart when the build didn't change (tarball hash matched).
627
661
  if [[ "${_ui_changed}" -eq 0 ]]; then
628
662
  ok "Dashboard unchanged — skipping restart"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.27.6"
7
+ version = "1.28.1"
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" }]
@@ -22,9 +22,15 @@ SERVICES_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
22
22
  REPO_ROOT="$(cd "${SERVICES_DIR}/.." && pwd)"
23
23
 
24
24
  # Locate the meridian binary that owns the `coding-agent-hook` subcommand.
25
- # Prefer the release build in this repo; fall back to whatever is on PATH.
26
- if [[ -x "${REPO_ROOT}/target/release/meridian" ]]; then
25
+ # Resolution order: explicit MERIDIAN_BIN override (bundle installer passes
26
+ # the installed binary), the release build in this repo, the bundle install
27
+ # location, then whatever is on PATH.
28
+ if [[ -n "${MERIDIAN_BIN:-}" && -x "${MERIDIAN_BIN}" ]]; then
29
+ : # caller pinned the binary
30
+ elif [[ -x "${REPO_ROOT}/target/release/meridian" ]]; then
27
31
  MERIDIAN_BIN="${REPO_ROOT}/target/release/meridian"
32
+ elif [[ -x "${HOME}/.meridian/app/bin/meridian" ]]; then
33
+ MERIDIAN_BIN="${HOME}/.meridian/app/bin/meridian"
28
34
  elif command -v meridian >/dev/null 2>&1; then
29
35
  MERIDIAN_BIN="$(command -v meridian)"
30
36
  elif command -v meridian-daemon >/dev/null 2>&1; then
@@ -82,12 +88,19 @@ new_entry = {
82
88
  # "coding-agent-hook". Claude Code strips unknown JSON fields (like the
83
89
  # former "_meridian" marker) on every save, so command-string matching
84
90
  # is the only reliable idempotency mechanism.
91
+ #
92
+ # "coding_agent_indexer" matches the retired Python hook (`python -m
93
+ # coding_agent_indexer.hook`) — the package was removed when the indexer
94
+ # moved into the Rust daemon, so stale entries just error on every
95
+ # SessionEnd. Purge them on upgrade.
96
+ OUR_MARKERS = ("coding-agent-hook", "coding_agent_indexer")
85
97
  filtered = []
86
98
  removed = 0
87
99
  for group in session_end:
88
100
  is_ours = any(
89
- "coding-agent-hook" in h.get("command", "")
101
+ marker in h.get("command", "")
90
102
  for h in group.get("hooks", [])
103
+ for marker in OUR_MARKERS
91
104
  )
92
105
  if is_ours:
93
106
  removed += 1
package/ui.tar.gz CHANGED
Binary file