Skip to content

v0.15.3

Choose a tag to compare

@jeffyaw jeffyaw released this 13 Sep 21:37
· 38 commits to main since this release
v0.15.3
aedcdf8

Fixed

  • The launcher always uses the newest oam, and the minimum is now the latest release, 0.15.2 (raised from 0.9.0). It used to take the FIRST oam binary it found and only then check its version, so a stale copy in an earlier location hid a current one: with oam 0.9.0 in ~/.oam/bin and 0.15.2 on PATH, it ran 0.9.0 — and an unrunnable file in an earlier location meant no oam at all. Every oam binary it can see is now asked for its version, and the newest at or above 0.15.2 wins; on a tie the installed copy still beats PATH.
  • An oam host older than the floor no longer serves the server itself. When a client ran oam run bin/ssh-mcp.mjs with an old oam and discovery found nothing usable, the server ran on that old oam. When a newer oam WAS found, the handoff inherited stdio, which an oam older than 0.9.0 does not honor, so the MCP handshake never answered (measured on a real oam 0.8.2 host with aws-mcp's launcher, which this one shares). An old host now hands off with piped stdio to the newest usable oam, or to Node on PATH, or exits with an error when there is neither. If the chosen oam then cannot be spawned (deleted or replaced after its version check), the launcher still falls back: a failed spawn emits close with the negative errno, so piping, signal forwarding and the exit mirror all wait for the child's spawn event rather than exiting the launcher in the middle of the fallback. The in-process path from 0.15.2 for a host at the floor still holds; the floor it names is now 0.15.2.
  • A bad OAM_BIN is reported, and discovery carries on. A path that does not exist, an oam below the floor, or a binary that will not run is named on stderr and the launcher goes on to discovery, instead of treating OAM_BIN as the only candidate — where a path that did not exist fell back to Node silently.
  • SSH_MCP_RUNTIME=node now always means Node. Launched under oam run, it hands off to Node on PATH rather than staying on oam.
  • Each oam --version probe is bounded at 5s, so a wedged binary on PATH cannot hang the launch.

Changed

  • README: the Runtime selection section now covers the launcher being started by oam itself (oam run bin/ssh-mcp.mjs, which is how Yaw MCP starts an npx @yawlabs/ssh-mcp entry when a recent oam is installed) as well as by Node — the in-process serve on a current oam, the handoff from an older one, and what each SSH_MCP_RUNTIME value does on each host — and describes the discovery order, the 0.15.2 floor, and the failed-spawn fallback above (#43, #44).