drop legacy /state mount for manager (#604)
This commit is contained in:
parent
7aadf38483
commit
dc99e64b2d
4 changed files with 60 additions and 62 deletions
|
|
@ -26,11 +26,6 @@ pub const CONTAINER_RUNTIME_MOUNT: &str = "/run/hive";
|
|||
/// Persistent across destroy/recreate so OAuth login survives.
|
||||
pub const CONTAINER_CLAUDE_MOUNT: &str = "/root/.claude";
|
||||
|
||||
/// Mount point of the per-agent durable knowledge dir inside the container.
|
||||
/// Agents are told (system prompt) to keep `notes.md` and any other scratch
|
||||
/// state here; persists across destroy/recreate.
|
||||
pub const CONTAINER_NOTES_MOUNT: &str = "/state";
|
||||
|
||||
/// Mount point of the shared directory accessible to all agents.
|
||||
/// All agents can read/write here; agents should only put things they're
|
||||
/// willing to lose (other agents may delete them).
|
||||
|
|
@ -865,25 +860,29 @@ fn set_nspawn_flags(
|
|||
// below are gated on `container == MANAGER_NAME` anyway.
|
||||
let agent_name = container.strip_prefix(AGENT_PREFIX).unwrap_or(container);
|
||||
|
||||
// Compute the in-container state mount point. Sub-agents get
|
||||
// /agents/<name>/state; the manager keeps the legacy /state path.
|
||||
// Claude credentials always land at /root/.claude for all agents so
|
||||
// the `claude` CLI (which reads $HOME/.claude) finds them without any
|
||||
// HOME override.
|
||||
let notes_mount = if container == MANAGER_NAME {
|
||||
CONTAINER_NOTES_MOUNT.to_owned()
|
||||
} else {
|
||||
format!("/agents/{agent_name}/state")
|
||||
};
|
||||
// Claude credentials always land at /root/.claude so the
|
||||
// `claude` CLI (which reads $HOME/.claude) finds them without
|
||||
// any HOME override.
|
||||
let claude_mount = CONTAINER_CLAUDE_MOUNT;
|
||||
|
||||
let mut binds = format!(
|
||||
"--bind={runtime}:{CONTAINER_RUNTIME_MOUNT} --bind={claude}:{claude_mount} --bind={notes}:{notes_mount} --bind={shared}:{CONTAINER_SHARED_MOUNT}",
|
||||
"--bind={runtime}:{CONTAINER_RUNTIME_MOUNT} --bind={claude}:{claude_mount} --bind={shared}:{CONTAINER_SHARED_MOUNT}",
|
||||
runtime = runtime_dir.display(),
|
||||
claude = claude_dir.display(),
|
||||
notes = notes_dir.display(),
|
||||
shared = HOST_SHARED_ROOT,
|
||||
);
|
||||
|
||||
// Per-agent state at `/agents/<container>/state`. Skipped for
|
||||
// the manager — the `/agents` bind below already exposes its
|
||||
// own state (along with every sub-agent's). Pre-#604 the manager
|
||||
// had a bespoke `/state` legacy alias bind; that's gone.
|
||||
if container != MANAGER_NAME {
|
||||
let _ = write!(
|
||||
binds,
|
||||
" --bind={notes}:/agents/{agent_name}/state",
|
||||
notes = notes_dir.display(),
|
||||
);
|
||||
}
|
||||
if container == MANAGER_NAME {
|
||||
// systemd-nspawn refuses to start a container whose bind
|
||||
// source doesn't exist. The meta repo is created by the
|
||||
|
|
|
|||
Loading…
Reference in a new issue