@meridiona/meridian-darwin-arm64 1.52.0 → 1.52.2
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 +1 -1
- package/bin/meridian +0 -0
- package/package.json +1 -1
- package/scripts/com.meridiona.openobserve.plist +69 -0
- package/scripts/install-openobserve-daemon.sh +237 -0
- package/scripts/uninstall-openobserve-daemon.sh +32 -0
- package/services/pyproject.toml +1 -1
- package/ui.tar.gz +0 -0
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.52.
|
|
1
|
+
1.52.2
|
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.52.
|
|
3
|
+
"version": "1.52.2",
|
|
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": {
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
com.meridiona.openobserve — runs OpenObserve as a local OTLP backend for
|
|
4
|
+
traces + logs from the Meridian stack. Serves on http://localhost:5080.
|
|
5
|
+
|
|
6
|
+
Install via scripts/install-openobserve-daemon.sh which copies this file
|
|
7
|
+
into ~/Library/LaunchAgents/ with absolute paths and credentials
|
|
8
|
+
substituted, then bootstraps it under launchd. The plist below uses
|
|
9
|
+
{{HOME}}, {{OO_BIN}}, {{OO_EMAIL}}, and {{OO_PASSWORD}} placeholders that
|
|
10
|
+
the install script decodes from MERIDIAN_OO_AUTH and substitutes.
|
|
11
|
+
|
|
12
|
+
Uninstall:
|
|
13
|
+
scripts/uninstall-openobserve-daemon.sh
|
|
14
|
+
Or manually:
|
|
15
|
+
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.meridiona.openobserve.plist
|
|
16
|
+
rm ~/Library/LaunchAgents/com.meridiona.openobserve.plist
|
|
17
|
+
-->
|
|
18
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
19
|
+
<plist version="1.0">
|
|
20
|
+
<dict>
|
|
21
|
+
<key>Label</key>
|
|
22
|
+
<string>com.meridiona.openobserve</string>
|
|
23
|
+
|
|
24
|
+
<!-- run.sh reads ~/.openobserve/.log_level for RUST_LOG (default: warn)
|
|
25
|
+
and sets memory caps before exec-ing the binary. -->
|
|
26
|
+
<key>ProgramArguments</key>
|
|
27
|
+
<array>
|
|
28
|
+
<string>/bin/bash</string>
|
|
29
|
+
<string>{{HOME}}/.openobserve/run.sh</string>
|
|
30
|
+
</array>
|
|
31
|
+
|
|
32
|
+
<key>EnvironmentVariables</key>
|
|
33
|
+
<dict>
|
|
34
|
+
<key>HOME</key>
|
|
35
|
+
<string>{{HOME}}</string>
|
|
36
|
+
<!-- Admin credentials used by OO to bootstrap its first-run account.
|
|
37
|
+
Decoded from MERIDIAN_OO_AUTH = base64(email:password) by the
|
|
38
|
+
install script. -->
|
|
39
|
+
<key>ZO_ROOT_USER_EMAIL</key>
|
|
40
|
+
<string>{{OO_EMAIL}}</string>
|
|
41
|
+
<key>ZO_ROOT_USER_PASSWORD</key>
|
|
42
|
+
<string>{{OO_PASSWORD}}</string>
|
|
43
|
+
<key>ZO_DATA_DIR</key>
|
|
44
|
+
<string>{{HOME}}/.openobserve/data</string>
|
|
45
|
+
<key>ZO_HTTP_PORT</key>
|
|
46
|
+
<string>5080</string>
|
|
47
|
+
<key>ZO_GRPC_PORT</key>
|
|
48
|
+
<string>5081</string>
|
|
49
|
+
<key>ZO_TELEMETRY</key>
|
|
50
|
+
<string>false</string>
|
|
51
|
+
</dict>
|
|
52
|
+
|
|
53
|
+
<key>StandardOutPath</key>
|
|
54
|
+
<string>{{HOME}}/.meridian/logs/openobserve.log</string>
|
|
55
|
+
<key>StandardErrorPath</key>
|
|
56
|
+
<string>{{HOME}}/.meridian/logs/openobserve-error.log</string>
|
|
57
|
+
|
|
58
|
+
<!-- RunAtLoad true: OO must be up before the Rust daemon and Python agents
|
|
59
|
+
send traces, so it starts immediately on login. -->
|
|
60
|
+
<key>RunAtLoad</key>
|
|
61
|
+
<true/>
|
|
62
|
+
<key>KeepAlive</key>
|
|
63
|
+
<true/>
|
|
64
|
+
<key>ThrottleInterval</key>
|
|
65
|
+
<integer>30</integer>
|
|
66
|
+
<key>ProcessType</key>
|
|
67
|
+
<string>Background</string>
|
|
68
|
+
</dict>
|
|
69
|
+
</plist>
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ambient dev tool that watches what you do and updates your PM tickets automatically, boosting developer productivity
|
|
3
|
+
# Install OpenObserve as a launchd LaunchAgent under the current user.
|
|
4
|
+
# Serves on http://localhost:5080 and auto-starts on login.
|
|
5
|
+
#
|
|
6
|
+
# ./scripts/install-openobserve-daemon.sh
|
|
7
|
+
#
|
|
8
|
+
# Re-running is safe — it bootouts the existing agent first, rewrites the
|
|
9
|
+
# plist with current credentials, and reloads it.
|
|
10
|
+
#
|
|
11
|
+
# Credentials come from settings.json (oo_email/oo_password, set in the
|
|
12
|
+
# dashboard Settings). MERIDIAN_OO_AUTH in <repo>/.env is DEPRECATED and used
|
|
13
|
+
# only as a fallback; with no credentials anywhere the agent is installed
|
|
14
|
+
# stopped and the dashboard toggle starts it once credentials are set.
|
|
15
|
+
#
|
|
16
|
+
# Uninstall:
|
|
17
|
+
# ./scripts/uninstall-openobserve-daemon.sh
|
|
18
|
+
|
|
19
|
+
set -euo pipefail
|
|
20
|
+
|
|
21
|
+
LABEL="com.meridiona.openobserve"
|
|
22
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
23
|
+
TEMPLATE="${SCRIPT_DIR}/${LABEL}.plist"
|
|
24
|
+
|
|
25
|
+
LAUNCH_AGENTS="${HOME}/Library/LaunchAgents"
|
|
26
|
+
PLIST_DEST="${LAUNCH_AGENTS}/${LABEL}.plist"
|
|
27
|
+
|
|
28
|
+
GUI_TARGET="gui/$(id -u)"
|
|
29
|
+
|
|
30
|
+
if [[ ! -f "${TEMPLATE}" ]]; then
|
|
31
|
+
echo "✗ template not found: ${TEMPLATE}" >&2
|
|
32
|
+
exit 1
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Locate the OpenObserve binary.
|
|
36
|
+
OO_BIN=""
|
|
37
|
+
if [[ -x "${HOME}/.openobserve/openobserve" ]]; then
|
|
38
|
+
OO_BIN="${HOME}/.openobserve/openobserve"
|
|
39
|
+
elif command -v openobserve >/dev/null 2>&1; then
|
|
40
|
+
OO_BIN="$(command -v openobserve)"
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
if [[ -z "${OO_BIN}" ]]; then
|
|
44
|
+
echo "→ OpenObserve binary not found — downloading v0.11.0 (last release with arm64 binary)..."
|
|
45
|
+
_oo_arch="$(uname -m)"
|
|
46
|
+
case "$_oo_arch" in
|
|
47
|
+
arm64) _oo_arch="arm64" ;;
|
|
48
|
+
x86_64) _oo_arch="amd64" ;;
|
|
49
|
+
*) echo "✗ Unsupported arch: $_oo_arch" >&2; exit 1 ;;
|
|
50
|
+
esac
|
|
51
|
+
_oo_ver="v0.11.0"
|
|
52
|
+
_oo_url="https://github.com/openobserve/openobserve/releases/download/${_oo_ver}/openobserve-${_oo_ver}-darwin-${_oo_arch}.tar.gz"
|
|
53
|
+
mkdir -p "${HOME}/.openobserve"
|
|
54
|
+
if curl -fsSL -o "${HOME}/.openobserve/openobserve.tar.gz" "$_oo_url" \
|
|
55
|
+
&& tar -xzf "${HOME}/.openobserve/openobserve.tar.gz" -C "${HOME}/.openobserve" \
|
|
56
|
+
&& [[ -x "${HOME}/.openobserve/openobserve" ]]; then
|
|
57
|
+
rm -f "${HOME}/.openobserve/openobserve.tar.gz"
|
|
58
|
+
OO_BIN="${HOME}/.openobserve/openobserve"
|
|
59
|
+
echo "✓ OpenObserve ${_oo_ver} downloaded"
|
|
60
|
+
else
|
|
61
|
+
rm -f "${HOME}/.openobserve/openobserve.tar.gz"
|
|
62
|
+
echo "✗ Download failed from ${_oo_url}" >&2
|
|
63
|
+
echo " Install manually: https://openobserve.ai/docs/install/" >&2
|
|
64
|
+
exit 1
|
|
65
|
+
fi
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Resolve OpenObserve root credentials. settings.json (written by the dashboard
|
|
69
|
+
# Settings page) is the canonical source; MERIDIAN_OO_AUTH in <repo>/.env is
|
|
70
|
+
# DEPRECATED and honoured only as a fallback for not-yet-migrated installs.
|
|
71
|
+
# With no credentials anywhere, the plist is written with placeholders and the
|
|
72
|
+
# service is left stopped — enabling OpenObserve Export in the dashboard
|
|
73
|
+
# patches real credentials into the plist (POST /api/openobserve) before the
|
|
74
|
+
# service's first start, which is when OpenObserve creates its root account.
|
|
75
|
+
_get_setting() {
|
|
76
|
+
python3 -c "import json,sys;print(json.load(open(sys.argv[1])).get(sys.argv[2]) or '')" "$1" "$2" 2>/dev/null || true
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
OO_EMAIL=""
|
|
80
|
+
OO_PASSWORD=""
|
|
81
|
+
for _settings in "${HOME}/.meridian/settings.json" "$(cd "${SCRIPT_DIR}/.." && pwd)/settings.json"; do
|
|
82
|
+
[[ -f "${_settings}" ]] || continue
|
|
83
|
+
OO_EMAIL="$(_get_setting "${_settings}" oo_email)"
|
|
84
|
+
OO_PASSWORD="$(_get_setting "${_settings}" oo_password)"
|
|
85
|
+
if [[ -n "${OO_EMAIL}" && -n "${OO_PASSWORD}" ]]; then
|
|
86
|
+
echo "→ using OpenObserve credentials from ${_settings}"
|
|
87
|
+
break
|
|
88
|
+
fi
|
|
89
|
+
OO_EMAIL=""; OO_PASSWORD=""
|
|
90
|
+
done
|
|
91
|
+
|
|
92
|
+
if [[ -z "${OO_EMAIL}" ]]; then
|
|
93
|
+
ENV_FILE="$(cd "${SCRIPT_DIR}/.." && pwd)/.env"
|
|
94
|
+
OO_AUTH=""
|
|
95
|
+
if [[ -f "${ENV_FILE}" ]]; then
|
|
96
|
+
OO_AUTH="$(grep -E '^MERIDIAN_OO_AUTH=' "${ENV_FILE}" | cut -d= -f2- | tr -d '[:space:]')" || true
|
|
97
|
+
fi
|
|
98
|
+
if [[ -n "${OO_AUTH}" ]]; then
|
|
99
|
+
echo " ⚠ MERIDIAN_OO_AUTH is DEPRECATED — set OpenObserve credentials in the dashboard Settings instead" >&2
|
|
100
|
+
OO_CREDENTIALS="$(printf '%s' "${OO_AUTH}" | base64 --decode 2>/dev/null)" || OO_CREDENTIALS=""
|
|
101
|
+
OO_EMAIL="${OO_CREDENTIALS%%:*}"
|
|
102
|
+
OO_PASSWORD="${OO_CREDENTIALS#*:}"
|
|
103
|
+
if [[ -z "${OO_EMAIL}" || -z "${OO_PASSWORD}" || "${OO_EMAIL}" == "${OO_CREDENTIALS}" ]]; then
|
|
104
|
+
OO_EMAIL=""; OO_PASSWORD=""
|
|
105
|
+
fi
|
|
106
|
+
fi
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
_no_creds=0
|
|
110
|
+
if [[ -z "${OO_EMAIL}" || -z "${OO_PASSWORD}" ]]; then
|
|
111
|
+
_no_creds=1
|
|
112
|
+
OO_EMAIL="setup-pending@meridian.local"
|
|
113
|
+
OO_PASSWORD="setup-pending"
|
|
114
|
+
echo "→ no OpenObserve credentials yet — installing the agent stopped; enable"
|
|
115
|
+
echo " OpenObserve Export in the dashboard Settings to set them and start it"
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
mkdir -p "${HOME}/.meridian/logs"
|
|
119
|
+
mkdir -p "${HOME}/.openobserve/data"
|
|
120
|
+
mkdir -p "${LAUNCH_AGENTS}"
|
|
121
|
+
|
|
122
|
+
# Remove legacy ai.openobserve agent — it conflicts with com.meridiona.openobserve
|
|
123
|
+
# (both try to bind port 5080, causing a crash-loop on the Meridian plist).
|
|
124
|
+
_legacy_plist="${LAUNCH_AGENTS}/ai.openobserve.plist"
|
|
125
|
+
if [[ -f "${_legacy_plist}" ]]; then
|
|
126
|
+
echo "→ removing legacy ai.openobserve agent"
|
|
127
|
+
launchctl bootout "gui/$(id -u)/ai.openobserve" 2>/dev/null || true
|
|
128
|
+
rm -f "${_legacy_plist}"
|
|
129
|
+
echo "✓ legacy agent removed"
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# Write the launcher script. run.sh reads ~/.openobserve/.log_level for
|
|
133
|
+
# RUST_LOG (default: warn) and sets memory caps before exec-ing the binary.
|
|
134
|
+
echo "→ writing ${HOME}/.openobserve/run.sh"
|
|
135
|
+
cat > "${HOME}/.openobserve/run.sh" <<'RUNEOF'
|
|
136
|
+
#!/usr/bin/env bash
|
|
137
|
+
# ambient dev tool that watches what you do and updates your PM tickets automatically, boosting developer productivity
|
|
138
|
+
# OpenObserve launcher. Called by launchd (com.meridiona.openobserve).
|
|
139
|
+
#
|
|
140
|
+
# Log level override (dev):
|
|
141
|
+
# echo info > ~/.openobserve/.log_level # verbose
|
|
142
|
+
# echo warn > ~/.openobserve/.log_level # default (quiet)
|
|
143
|
+
# echo debug > ~/.openobserve/.log_level # very verbose
|
|
144
|
+
# rm ~/.openobserve/.log_level # back to default
|
|
145
|
+
# launchctl kickstart -k gui/$(id -u)/com.meridiona.openobserve
|
|
146
|
+
|
|
147
|
+
set -euo pipefail
|
|
148
|
+
|
|
149
|
+
_level_file="${HOME}/.openobserve/.log_level"
|
|
150
|
+
if [[ -f "${_level_file}" ]]; then
|
|
151
|
+
RUST_LOG="$(tr -d '[:space:]' < "${_level_file}")"
|
|
152
|
+
else
|
|
153
|
+
RUST_LOG="warn"
|
|
154
|
+
fi
|
|
155
|
+
export RUST_LOG
|
|
156
|
+
|
|
157
|
+
export ZO_MEMORY_CACHE_MAX_SIZE=2147483648 # 2 GB (cache layer)
|
|
158
|
+
export ZO_DATAFUSION_POOL_SIZE=4294967296 # 4 GB (query engine)
|
|
159
|
+
|
|
160
|
+
exec "${HOME}/.openobserve/openobserve"
|
|
161
|
+
RUNEOF
|
|
162
|
+
chmod +x "${HOME}/.openobserve/run.sh"
|
|
163
|
+
echo "✓ run.sh written"
|
|
164
|
+
|
|
165
|
+
# Write the plist via Python so email/password values with special characters
|
|
166
|
+
# are substituted safely without sed delimiter collisions.
|
|
167
|
+
echo "→ writing ${PLIST_DEST}"
|
|
168
|
+
python3 - "${TEMPLATE}" "${PLIST_DEST}" "${HOME}" "${OO_BIN}" "${OO_EMAIL}" "${OO_PASSWORD}" <<'PYEOF'
|
|
169
|
+
import sys
|
|
170
|
+
template_path, dest_path, home, oo_bin, oo_email, oo_password = sys.argv[1:]
|
|
171
|
+
with open(template_path) as f:
|
|
172
|
+
content = f.read()
|
|
173
|
+
for placeholder, value in [
|
|
174
|
+
("{{HOME}}", home),
|
|
175
|
+
("{{OO_BIN}}", oo_bin),
|
|
176
|
+
("{{OO_EMAIL}}", oo_email),
|
|
177
|
+
("{{OO_PASSWORD}}", oo_password),
|
|
178
|
+
]:
|
|
179
|
+
content = content.replace(placeholder, value)
|
|
180
|
+
with open(dest_path, "w") as f:
|
|
181
|
+
f.write(content)
|
|
182
|
+
PYEOF
|
|
183
|
+
|
|
184
|
+
if ! plutil -lint "${PLIST_DEST}" >/dev/null; then
|
|
185
|
+
echo "✗ plist failed plutil validation" >&2
|
|
186
|
+
exit 1
|
|
187
|
+
fi
|
|
188
|
+
|
|
189
|
+
echo "→ bootout ${LABEL} (if loaded)"
|
|
190
|
+
launchctl bootout "${GUI_TARGET}/${LABEL}" 2>/dev/null || true
|
|
191
|
+
# Wait until launchd confirms the service is gone before re-bootstrapping.
|
|
192
|
+
# A fixed sleep is unreliable — on slower machines or when the prior process
|
|
193
|
+
# takes time to exit, bootstrap can fail with EIO (errno 5) if the domain
|
|
194
|
+
# entry hasn't been fully removed yet.
|
|
195
|
+
_bootout_wait=0
|
|
196
|
+
while launchctl print "${GUI_TARGET}/${LABEL}" >/dev/null 2>&1; do
|
|
197
|
+
sleep 1
|
|
198
|
+
_bootout_wait=$(( _bootout_wait + 1 ))
|
|
199
|
+
if [[ "${_bootout_wait}" -ge 15 ]]; then
|
|
200
|
+
echo "⚠ ${LABEL} still in launchd domain after 15s — proceeding anyway" >&2
|
|
201
|
+
break
|
|
202
|
+
fi
|
|
203
|
+
done
|
|
204
|
+
|
|
205
|
+
# Respect the runtime toggle: the service runs only when "OpenObserve Export"
|
|
206
|
+
# is enabled in Settings. The plist is always installed so the UI's toggle
|
|
207
|
+
# (POST /api/openobserve) can start/stop the service on demand; here we only
|
|
208
|
+
# decide the INITIAL state. No settings.json anywhere → off (matches
|
|
209
|
+
# RuntimeSettings::default and the UI default).
|
|
210
|
+
_otlp_enabled() {
|
|
211
|
+
local f
|
|
212
|
+
for f in "${HOME}/.meridian/settings.json" "$(cd "${SCRIPT_DIR}/.." && pwd)/settings.json"; do
|
|
213
|
+
[[ -f "$f" ]] || continue
|
|
214
|
+
grep -q '"otlp_enabled"[[:space:]]*:[[:space:]]*true' "$f" && return 0
|
|
215
|
+
return 1
|
|
216
|
+
done
|
|
217
|
+
return 1
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if [[ "${_no_creds}" -eq 0 ]] && _otlp_enabled; then
|
|
221
|
+
echo "→ bootstrap ${LABEL} (OpenObserve Export is enabled in settings)"
|
|
222
|
+
launchctl bootstrap "${GUI_TARGET}" "${PLIST_DEST}"
|
|
223
|
+
launchctl enable "${GUI_TARGET}/${LABEL}"
|
|
224
|
+
launchctl kickstart -k "${GUI_TARGET}/${LABEL}"
|
|
225
|
+
echo
|
|
226
|
+
echo "✓ OpenObserve installed and started"
|
|
227
|
+
else
|
|
228
|
+
launchctl disable "${GUI_TARGET}/${LABEL}" 2>/dev/null || true
|
|
229
|
+
echo
|
|
230
|
+
echo "✓ OpenObserve installed (service left stopped — OpenObserve Export is"
|
|
231
|
+
echo " disabled in Settings; enable the toggle in the dashboard to start it)"
|
|
232
|
+
fi
|
|
233
|
+
echo
|
|
234
|
+
echo " open http://localhost:5080 # the UI"
|
|
235
|
+
echo " tail -f ~/.meridian/logs/openobserve.log # live stdout"
|
|
236
|
+
echo " tail -f ~/.meridian/logs/openobserve-error.log # live stderr"
|
|
237
|
+
echo " ${SCRIPT_DIR}/uninstall-openobserve-daemon.sh # remove"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# ambient dev tool that watches what you do and updates your PM tickets automatically, boosting developer productivity
|
|
3
|
+
# Stop and remove the OpenObserve launchd agent.
|
|
4
|
+
# Data at ~/.openobserve/data/ is left intact.
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
LABEL="com.meridiona.openobserve"
|
|
9
|
+
PLIST="${HOME}/Library/LaunchAgents/${LABEL}.plist"
|
|
10
|
+
GUI_TARGET="gui/$(id -u)"
|
|
11
|
+
|
|
12
|
+
# Remove legacy agent if still present.
|
|
13
|
+
_legacy="${HOME}/Library/LaunchAgents/ai.openobserve.plist"
|
|
14
|
+
if [[ -f "${_legacy}" ]]; then
|
|
15
|
+
launchctl bootout "${GUI_TARGET}/ai.openobserve" 2>/dev/null || true
|
|
16
|
+
rm -f "${_legacy}"
|
|
17
|
+
echo "✓ legacy ai.openobserve agent removed"
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
if [[ ! -f "${PLIST}" ]]; then
|
|
21
|
+
echo "(${LABEL} not installed)"
|
|
22
|
+
exit 0
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
if launchctl print "${GUI_TARGET}/${LABEL}" >/dev/null 2>&1; then
|
|
26
|
+
echo "→ bootout ${LABEL}"
|
|
27
|
+
launchctl bootout "${GUI_TARGET}" "${PLIST}" || true
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
rm -f "${PLIST}"
|
|
31
|
+
echo "✓ ${LABEL} uninstalled"
|
|
32
|
+
echo " (trace data at ~/.openobserve/data/ is preserved)"
|
package/services/pyproject.toml
CHANGED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "meridian-agents"
|
|
7
|
-
version = "1.52.
|
|
7
|
+
version = "1.52.2"
|
|
8
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" }]
|
package/ui.tar.gz
CHANGED
|
Binary file
|