R2: glob() hid a listing error, so an unreadable .mam/jobs (or MAM_JOBS_DIR, or another row's jobs dir) counted as empty and the update installed over an open job. Records are now listed with os.listdir; a directory that cannot be listed, or stat'ed, is a blocker with its path. R3: a discovered agent with no row was told to run stop with --session only; stop then looked on the workspace's server, not the one the agent was found on. The hint now carries --herdr-session <server>, quoted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
name, description, version, author, license, platforms, environments, metadata
| name | description | version | author | license | platforms | environments | metadata | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| multi-agent-mux-update | Update an installed MAM workspace in place to the latest version. Refuses while a session, an open job, a review loop or an unknown monitor is live; stops the monitor daemon and starts it again afterwards; rolls everything back if the install fails; converts the registry with the newly installed code. Use instead of the removed .mam_deploy/update.sh. | 4.11.0 | godopu | MIT |
|
|
|
Multi-Agent Update
bash .agents/skills/multi-agent-mux-update/scripts/update.sh --yes
| Item | Behaviour |
|---|---|
| Where | An installed workspace only (.mam_deploy/remove.sh present). A git checkout updates with git pull. |
| Confirmation | [y/N] prompt; without a terminal -y/--yes is required. There is no force option. |
| Refused when | a running registry row, a live herdr agent whose cwd is in the workspace (any running server), an open job (an unreadable job JSON or jobs directory included, dry_run excluded), a live loop marker, .mam/monitor.lock held by a monitor the skills did not start, or another update. The calling agent (its herdr server + pane, row and one running job) is not counted. Each refusal lists the cleanup; nothing is changed. |
| During the update | create, resume, run_loop.sh, delegate submit, stop and orc-onboard refuse (.mam/update-in-progress, .mam/update-admission.lock). |
| Monitor | stopped first, started again afterwards only if it ran (MAM_NO_SUBSCRIBER_DAEMON=1: not started). |
| Install | the installer at MAM_INSTALLER_URL (default: Gitea main) runs in place; .mam is kept. On failure .agents/, .mam_deploy/, root files, .venv, the installer's .mam files and the registry are restored from .mam/update-backup/. |
| Registry | converted by the new code (lib_py.registry_format); a failed conversion keeps the install and exits nonzero. |
| Exit | 0 updated, 1 refused or failed, 2 bad arguments. |