claude: auto-install native binary on oven builds + pin Sonnet 4.7 default
Fixes two related on-device breakages reported after flash:
1. "claude: command not found" / "install native" prompt
ac-os bundles /bin/claude by copying from the builder's local
~/.local/share/claude/versions/<latest>. That works on developer
machines but the oven build server doesn't have claude pre-installed,
so /bin/claude was silently missing from every OS image. When the
user opened the `code` (claude) piece the PTY spawned a binary that
didn't exist, and the npm-wrapper stub that DOES exist on some
devices printed "install native" prompting them to download the
native binary they're already trying to run.
Fix: in ac-os, if CLAUDE_BIN isn't found locally, `curl -fsSL
https://claude.ai/install.sh | bash` populates the versions dir
as a fallback. Output is streamed through the build log so failures
are obvious. Non-fatal if install.sh fails — the build still
completes and logs "(non-fatal — will ship image without /bin/claude)"
so we don't break builds on network flake.
2. Default model wasn't pinned to Sonnet 4.7
Two-layer fix — the CLI resolves model selection from:
(a) ANTHROPIC_MODEL env var (set at PTY child spawn in pty.c)
(b) `model` key in /tmp/.claude/settings.json (written by init)
Both layers now carry `"sonnet"`, the Anthropic alias that resolves
to the latest Sonnet family member — currently 4.7. Users who want
to pin a specific version can override either source.
pty.c setenv uses overwrite=0 so ANTHROPIC_MODEL is preserved if the
user has already exported one in their shell session.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>