Skip to content

v0.29.0

Latest

Choose a tag to compare

@ryanio ryanio released this 23 Aug 19:05

What's changed

Breaking. A paid tool whose settlement fails now returns 502 without the output, instead of 200 with the result. createToolHandler gains settlement, defaulting to "required". Set settlement: "best-effort" to restore the previous behavior, which only suits callers who reconcile failed settlements out of band. This is a minor version because the package is pre-1.0, not because the change is small.

Also in this release:

  • replayGuard on the hosted x402 gates and paidPredicateGate, an optional single-use claim over each authorization's (payer, nonce) pair. Off by default, since it needs storage shared across instances.
  • RPC_URL is resolved as a universal RPC fallback for all wallet providers.
  • Hostnames are resolved and re-checked against private ranges before anything is fetched, in probe-endpoint and in inspect. The previous guard only inspected the hostname string, so a public name whose A record points inward was fetched. inspect matters most here because its metadataURI comes from a permissionlessly writable registry. A DNS-rebinding window remains and needs a connect-time-pinned dial.
  • deploy runs vercel link and vercel env add by argv rather than building a shell string. It interpolated the working directory's package.json name, variable names parsed from .env.local.example, and vercel whoami output into a string passed to execSync.
  • The usage reporters refuse a plaintext aggregator URL consistently. Only one of the three checked, while all three send an x-api-key and one forwards a signed authorization.

Community contributions

  • Shell interpolation in deploy, thanks @ygd58 for the fix (#18) and @bilguunbicktivism for the report (#14), which identified all three call sites and recommended the argv approach used here.
  • Lexical-only private address guard, thanks @ygd58 for the fix (#19) and @bilguunbicktivism for the report (#13), which demonstrated the bypass through inspect.

Full changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.28.5...tool-sdk-v0.29.0