fix(issue-45): the shim bootstrap starts MAM servers with restore-on-restart off
The headless bootstrap regenerates the server config on every start and hands it to the server as HERDR_CONFIG_PATH. Without a file the server still starts, with a warning. mam_sandbox unsets HERDR_CONFIG_PATH/XDG_CONFIG_HOME so the file lands in the sandbox HOME. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a640b0f072
commit
ed73f67a4f
3 files changed
+41
-1
No files matched your search
+15
-1
@@ -230,6 +230,18 @@ except Exception:
|
||||
# identity to its sub-agents. Drop only per-session runtime markers - user
|
||||
# configuration such as CLAUDE_PROJECT_DIR or CLAUDE_CONFIG_DIR still
|
||||
# inherits. The family ids mirror what orc_onboard.sh auto-detects.
|
||||
#
|
||||
# ISSUE-45: the server restores its saved layout on start and would
|
||||
# relaunch every saved agent with herdr's own resume command (no permission
|
||||
# flags, deleted agents included). It gets HERDR_CONFIG_PATH = the user's
|
||||
# herdr config with [session] resume_agents_on_restore = false, rebuilt on
|
||||
# every start (lib_py/herdr_config.py). Without that file the server still
|
||||
# starts - with restore on, as before.
|
||||
MAM_SERVER_CFG=$(python3 -m lib_py.herdr_config server-config --fallback-dir "$_SHIM_DIR/.." || true)
|
||||
export MAM_SERVER_CFG
|
||||
if [ -z "$MAM_SERVER_CFG" ]; then
|
||||
echo "WARNING: restore-on-restart stays enabled for herdr session $_MAM_SESSION (no server config)" >&2
|
||||
fi
|
||||
_mam_server_pid=$(python3 -c '
|
||||
import os, subprocess, sys
|
||||
deny = ("CLAUDECODE", "CLAUDE_CODE_CHILD_SESSION", "CLAUDE_CODE_SESSION_ID",
|
||||
@@ -237,8 +249,10 @@ deny = ("CLAUDECODE", "CLAUDE_CODE_CHILD_SESSION", "CLAUDE_CODE_SESSION_ID",
|
||||
"CLAUDE_CODE_MESSAGING_TOKEN", "CLAUDE_CODE_MESSAGING_SOCKET",
|
||||
"CLAUDE_CODE_BRIDGE_SESSION_ID",
|
||||
"ANTIGRAVITY_CONVERSATION_ID", "HERMES_SESSION_ID", "GROK_SESSION_ID",
|
||||
"OPENCODE_SESSION_ID")
|
||||
"OPENCODE_SESSION_ID", "MAM_SERVER_CFG")
|
||||
env = {k: v for k, v in os.environ.items() if k not in deny}
|
||||
if os.environ.get("MAM_SERVER_CFG"):
|
||||
env["HERDR_CONFIG_PATH"] = os.environ["MAM_SERVER_CFG"]
|
||||
p = subprocess.Popen(sys.argv[1:], start_new_session=True, env=env,
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
|
||||
stdin=subprocess.DEVNULL)
|
||||
|
||||
Reference in new issue
Block a user