Compare commits

...

1 Commits

Author SHA1 Message Date
john 67d529c81e fix(mindspace): keep standalone service data paths under MindSpace root
Prevent Portal .env from overriding MindSpace storage/users roots, and
set launchd env plus runtime docs to use /Users/john/MindSpace paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 18:06:16 +08:00
3 changed files with 49 additions and 4 deletions
@@ -4,6 +4,14 @@ set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
MEMIND_ROOT="${MEMIND_SHARED_ROOT:-/Users/john/Project/Memind}"
# The standalone MindSpace service may read shared Memind secrets from the
# Portal env, but its own data roots must stay owned by the standalone service
# root. Preserve explicitly inherited standalone root overrides, then clear any
# values that may be sourced from the monolith env below.
EXPLICIT_MINDSPACE_SERVICE_H5_ROOT="${MINDSPACE_SERVICE_H5_ROOT-}"
EXPLICIT_MINDSPACE_STORAGE_ROOT="${MINDSPACE_STORAGE_ROOT-}"
EXPLICIT_H5_USERS_ROOT="${H5_USERS_ROOT-}"
if [[ -f "${MEMIND_ROOT}/.env" ]]; then
set -a
# shellcheck disable=SC1090
@@ -11,11 +19,38 @@ if [[ -f "${MEMIND_ROOT}/.env" ]]; then
set +a
fi
if [[ -z "${EXPLICIT_MINDSPACE_SERVICE_H5_ROOT}" ]]; then
unset MINDSPACE_SERVICE_H5_ROOT
fi
if [[ -z "${EXPLICIT_MINDSPACE_STORAGE_ROOT}" ]]; then
unset MINDSPACE_STORAGE_ROOT
fi
if [[ -z "${EXPLICIT_H5_USERS_ROOT}" ]]; then
unset H5_USERS_ROOT
fi
if [[ -f "${ROOT}/.env" ]]; then
set -a
# shellcheck disable=SC1090
source "${ROOT}/.env"
set +a
fi
if [[ -n "${EXPLICIT_MINDSPACE_SERVICE_H5_ROOT}" ]]; then
export MINDSPACE_SERVICE_H5_ROOT="${EXPLICIT_MINDSPACE_SERVICE_H5_ROOT}"
fi
if [[ -n "${EXPLICIT_MINDSPACE_STORAGE_ROOT}" ]]; then
export MINDSPACE_STORAGE_ROOT="${EXPLICIT_MINDSPACE_STORAGE_ROOT}"
fi
if [[ -n "${EXPLICIT_H5_USERS_ROOT}" ]]; then
export H5_USERS_ROOT="${EXPLICIT_H5_USERS_ROOT}"
fi
export NODE_ENV=production
export MINDSPACE_MEMIND_ROOT="${MINDSPACE_MEMIND_ROOT:-${ROOT}/memind-source}"
export MINDSPACE_SERVICE_H5_ROOT="${MINDSPACE_SERVICE_H5_ROOT:-${MEMIND_ROOT}}"
export MINDSPACE_STORAGE_ROOT="${MINDSPACE_STORAGE_ROOT:-${MEMIND_ROOT}/data/mindspace}"
export H5_USERS_ROOT="${H5_USERS_ROOT:-${MEMIND_ROOT}/users}"
export MINDSPACE_STORAGE_ROOT="${MINDSPACE_STORAGE_ROOT:-${ROOT}/data/mindspace}"
export H5_USERS_ROOT="${H5_USERS_ROOT:-${ROOT}/users}"
export MINDSPACE_SERVICE_PORT="${MINDSPACE_SERVICE_PORT:-8082}"
export MINDSPACE_SERVICE_HOST="${MINDSPACE_SERVICE_HOST:-127.0.0.1}"
export MINDSPACE_REMOTE_AUTH_TOKEN="${MINDSPACE_REMOTE_AUTH_TOKEN:-${TKMIND_SERVER__SECRET_KEY:-}}"
+7 -2
View File
@@ -128,7 +128,11 @@ async function writeMetadata() {
'',
'Production runtime target:',
' /Users/john/MindSpace',
'Shared persisted data root:',
'Standalone persisted data root:',
' /Users/john/MindSpace/data/mindspace',
'Standalone users root:',
' /Users/john/MindSpace/users',
'Shared Portal/H5 root:',
' /Users/john/Project/Memind',
'',
'This artifact contains:',
@@ -145,7 +149,8 @@ async function writeMetadata() {
' users/ runtime data',
' .env / .env.local',
'',
'The production service keeps using shared persisted paths from /Users/john/Project/Memind.',
'The production service may read shared Portal secrets from /Users/john/Project/Memind/.env,',
'but standalone MindSpace data paths must stay under /Users/john/MindSpace.',
'',
`Git head ref: ${head.trim()}`,
].join('\n');
@@ -279,6 +279,10 @@ cat > "${SERVICE_PLIST}" <<EOF
<string>8082</string>
<key>MINDSPACE_SERVICE_HOST</key>
<string>127.0.0.1</string>
<key>MINDSPACE_STORAGE_ROOT</key>
<string>${APP_DIR}/data/mindspace</string>
<key>H5_USERS_ROOT</key>
<string>${APP_DIR}/users</string>
<key>MINDSPACE_SERVICE_AGENT_WORKER_ENABLED</key>
<string>true</string>
<key>MINDSPACE_SERVICE_WORKSPACE_MAINTENANCE</key>
@@ -306,6 +310,7 @@ mv "${NEW_DIR}" "${APP_DIR}"
APP_MOVED=1
say "启动 MindSpace service"
mkdir -p "${APP_DIR}/data/mindspace" "${APP_DIR}/users"
launchctl bootstrap "${LAUNCHD_GUI}" "${SERVICE_PLIST}" >/dev/null 2>&1 || true
launchctl enable "${LAUNCHD_GUI}/${SERVICE_LABEL}" >/dev/null 2>&1 || true
launchctl kickstart -k "${LAUNCHD_GUI}/${SERVICE_LABEL}" >/dev/null 2>&1 || true