@meridiona/meridian-darwin-arm64 1.32.1 → 1.34.0

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
@@ -24,12 +24,29 @@
24
24
  # MERIDIAN_UI_PORT=3939
25
25
 
26
26
  # ---------------------------------------------------------------------------
27
- # Jira (all three required to enable the Jira connector)
27
+ # Jira choose ONE auth path:
28
+ #
29
+ # (A) Browser OAuth (recommended): just run `meridian oauth-login jira`.
30
+ # It opens your browser, you click Accept, and tokens land in
31
+ # ~/.meridian/oauth/jira.json (auto-refreshed). No env vars, no API
32
+ # token; the site is discovered automatically. Then `meridian restart`.
33
+ #
34
+ # (B) Static API token (legacy): set JIRA_BASE_URL + JIRA_EMAIL + JIRA_API_TOKEN.
35
+ #
36
+ # If both are present, OAuth wins. JIRA_PROJECT_KEYS applies to either.
28
37
  # ---------------------------------------------------------------------------
29
38
 
39
+ # (A) OAuth needs NO config — Meridian ships a public client id. The vars below are
40
+ # optional overrides (e.g. a self-hosted app or a non-default redirect port).
41
+ # JIRA_OAUTH_CLIENT_ID=your-atlassian-app-client-id # override the baked-in client id
42
+ # JIRA_OAUTH_REDIRECT_PORT=9123 # must match the app's registered redirect
43
+ # http://127.0.0.1:<port>/callback
44
+
45
+ # (B) Static API token
30
46
  # JIRA_BASE_URL=https://your-org.atlassian.net
31
47
  # JIRA_EMAIL=you@your-org.com
32
48
  # JIRA_API_TOKEN=your-api-token-here
49
+
33
50
  # JIRA_PROJECT_KEYS=KAN,ENG # optional — comma-separated; empty = all projects
34
51
 
35
52
  # ---------------------------------------------------------------------------
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.32.1
1
+ 1.34.0
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.32.1",
3
+ "version": "1.34.0",
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": {
@@ -86,8 +86,8 @@ fi
86
86
 
87
87
  # ── 4. Install @meridiona/meridian ───────────────────────────────────────────
88
88
  info "Installing @meridiona/meridian@latest…"
89
- info " The npm package is small; the Python venv + Node runtime (~200 MB) download"
90
- info " once during 'meridian setup' below. Budget 2–4 min on a typical connection."
89
+ info " The npm package is small; Python deps + Node runtime download once during"
90
+ info " 'meridian setup' below. Budget 2–4 min on a typical connection."
91
91
  npm install -g @meridiona/meridian@latest
92
92
  ok "meridian installed ($(meridian --version 2>/dev/null || echo 'version unknown'))"
93
93
 
@@ -84,6 +84,9 @@ collect_credentials() {
84
84
  echo " (edit later anytime: meridian config edit)" >&2
85
85
  echo >&2
86
86
  if prompt_category "Jira"; then
87
+ info "Easiest: skip the token prompts below and, after install, run"
88
+ info " meridian oauth-login jira — connect in your browser, no API token."
89
+ info "Or fill these in for the legacy API-token path:"
87
90
  prompt_env_var "JIRA_BASE_URL" "Jira URL (e.g. https://your-org.atlassian.net)" 0 "$env_file"
88
91
  # The Python side reads JIRA_URL, the Rust side JIRA_BASE_URL — keep both in sync.
89
92
  local jira_url; jira_url="$(get_env_value JIRA_BASE_URL "$env_file")"
@@ -568,10 +571,42 @@ else
568
571
  info "Installing MLX inference server launchd agent…"
569
572
  bash "${APP_ROOT}/services/scripts/install-mlx-server-daemon.sh" --port "${MLX_PORT}" || warn "MLX agent install failed"
570
573
  info "Waiting for the MLX server to load the model…"
574
+ _MLX_LOG="${HOME}/.meridian/logs/mlx-server.log"
575
+ _MLX_ERR="${HOME}/.meridian/logs/mlx-server-error.log"
571
576
  _w=0
577
+
578
+ # Stream both log files while polling so the user can see which model is
579
+ # loading and whether a download is in progress.
580
+ # mlx-server.log — JSON structured logs: model selection, readiness
581
+ # mlx-server-error.log — raw stderr: huggingface_hub download progress
582
+ # tail -F follows by name and retries if the file doesn't exist yet.
583
+ (tail -F "${_MLX_LOG}" 2>/dev/null | python3 -u -c '
584
+ import sys, json
585
+ for line in sys.stdin:
586
+ line = line.rstrip()
587
+ if not line:
588
+ continue
589
+ try:
590
+ d = json.loads(line)
591
+ lvl = d.get("level", "INFO")
592
+ msg = d.get("message", line)
593
+ prefix = " ⚠ " if lvl in ("WARNING", "ERROR") else " · "
594
+ print(prefix + msg, flush=True)
595
+ except Exception:
596
+ print(" " + line, flush=True)
597
+ ') &
598
+ _log_pid=$!
599
+ (tail -F "${_MLX_ERR}" 2>/dev/null | while IFS= read -r _eline; do
600
+ printf ' %s\n' "${_eline}"
601
+ done) &
602
+ _err_pid=$!
603
+
572
604
  until curl -sf "http://127.0.0.1:${MLX_PORT}/health" >/dev/null 2>&1; do
573
- sleep 3; _w=$((_w+3)); [[ $_w -ge 300 ]] && { warn "MLX not ready after 300s — check: meridian logs mlx-server"; break; }
605
+ sleep 3; _w=$((_w+3))
606
+ [[ $_w -ge 300 ]] && { warn "MLX not ready after 300s — check: meridian logs mlx-server"; break; }
574
607
  done
608
+ { kill "${_log_pid}" "${_err_pid}" 2>/dev/null; wait "${_log_pid}" "${_err_pid}" 2>/dev/null; } || true
609
+
575
610
  # Only stamp after confirmed ready — prevents stale stamp on a failed restart.
576
611
  if curl -sf "http://127.0.0.1:${MLX_PORT}/health" >/dev/null 2>&1; then
577
612
  ok "MLX server ready (${_w}s)"
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meridian-agents"
7
- version = "1.32.1"
8
- description = "Meridian agents — hermes task linking and Jira progress updates for meridian.db"
7
+ version = "1.34.0"
8
+ description = "Meridian agents — MLX classifier server and Jira worklog synthesis for meridian.db"
9
9
  requires-python = ">=3.11"
10
10
  authors = [{ name = "Meridiona" }]
11
11
  license = { text = "MIT" }
@@ -53,9 +53,9 @@ meridian-server = "agents.server:main"
53
53
 
54
54
  [tool.uv]
55
55
  # Lock all extras so `uv lock` produces a complete, reproducible uv.lock.
56
- # The shipped venv installs BOTH server-side extras — `uv sync --extra mlx
57
- # --extra pm_worklog_update` — because the one MLX server serves
58
- # /classify_sessions (mlx) AND /synthesise_worklog (agno, pm_worklog_update).
56
+ # At install time both extras are synced — `uv sync --extra mlx --extra
57
+ # pm_worklog_update` — because the one MLX server serves /classify_sessions
58
+ # (mlx) AND /synthesise_worklog (agno, pm_worklog_update).
59
59
  constraint-dependencies = []
60
60
 
61
61
  [tool.setuptools.packages.find]
package/ui.tar.gz CHANGED
Binary file