Lockfile validation now uses a single command builder for both the `uv
lock --check` invocation and the recovery command shown to contributors.
Failures point at the stale `uv.lock` with a GitHub annotation and the
exact repo-root command needed to regenerate it.
Lockfile validation now follows the same package boundary as the PR diff
instead of treating every package in the repo as in scope. That keeps
unrelated stale lockfiles from blocking scoped work or forcing extra
path changes that release-please may interpret as release-relevant.
`_touches_talon()` excluded `libs/talon/uv.lock`, so a PR changing only
that lockfile skipped Talon's `uv lock --check`, allowing a
stale/malformed lockfile to pass pre-commit. Now any `libs/talon` path
(including `uv.lock`) counts as touching Talon, while unrelated changes
still skip Talon to preserve the optimization.
Made by [Open SWE](https://openswe.vercel.app)
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Cached-session MCP tools now match `langchain-mcp-adapters` 0.3 behavior
for MCP execution errors: `CallToolResult(isError=True)` is returned to
the model as a failed tool result instead of escaping as a raised
`ToolException`. Transport, session, retry, and reauth failures keep
their existing exception paths, while the generic recovery middleware
remains documented as a compatibility fallback for
non-MCP/tool-originated `ToolException`s.