pull in latest upstream#2
Open
TtheBC01 wants to merge 689 commits into
Open
Conversation
* feat: add permit2 and gas sponsorship extensions to gitbooks * feat: added permit2 python sdk changes to gitbooks * fix: pr feedback
* chore(site): add Conway Automaton, AgentCash, Stellar, AgentMail, Vercel; fix Alchemy link Made-with: Cursor * chore(site): fix Alchemy link with UTM, add Zerion Made-with: Cursor * chore(site): point partner links to x402-specific pages from Slack thread Made-with: Cursor * chore(site): add logos for new ecosystem partners Made-with: Cursor * chore(site): add Cloudflare, featured section with 8 major partners Made-with: Cursor * fix(site): make featured cards uniform height Made-with: Cursor * chore(site): remove highlighted section label, rename featured->highlighted in code Made-with: Cursor * chore(site): rename highlighted->pinned throughout ecosystem Made-with: Cursor * chore(site): rename pinned->topSection/top_section throughout ecosystem Made-with: Cursor * fix(site): align top_section field name between JSON and TypeScript interface Made-with: Cursor * chore(site): add OpenZeppelin facilitator partner Made-with: Cursor * feat(site): add brand scroller, ecosystem search, and UI improvements - Add animated brand scroller carousel on landing page with monocolor logos - Add ecosystem search with dropdown and filtered card results - Redesign facilitator modal to match site's light theme - Remove logo border frames from ecosystem cards - Add new ecosystem partners: Browserbase, Freepik, Hyperbrowser - Equalize card heights across all ecosystem sections * fix(site): fix search dropdown z-index and clear state issues - Move search into its own z-20 stacking context so dropdown overlays cards - Remove AnimatePresence wrapper from search results to prevent exit animation blocking the category view from remounting on clear * fix(site): fix search dropdown z-index and invalid partner JSON - Bump search wrapper to z-30 so dropdown overlays card elements - Fix invalid JSON in crypto-sentiment-api (comment) and quantumshield-api (markdown fence) * feat(site): merge stats and brand scroller into unified social proof section - Combine stats and brand logos into one section with a divider - Move "Adopted by" carousel into StatsSection component - Remove standalone BrandScroller component from page - Fix invalid JSON in crypto-sentiment-api and quantumshield-api metadata --------- Co-authored-by: Ethan Oroshiba <ethan.oroshiba@gmail.com>
The comment on line 26-27 stated hooks were "not fully integrated" and had a TODO to integrate them into Verify execution. All 7 hook tests (BeforeVerify, AfterVerify, OnVerifyFailure, BeforeSettle, AfterSettle, OnSettleFailure, MultipleHooks) already exercise hooks through the full Verify/Settle execution paths, confirming hooks are fully integrated. Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
) When Verify or Settle fails to find a matching facilitator for a scheme/network pair, the error now lists all registered scheme/network combinations. This helps users quickly identify misconfiguration (e.g., wrong network name, missing registration) without having to inspect the facilitator setup code. Before: no facilitator for scheme exact on network eip155:1 After: no facilitator for scheme "exact" on network "eip155:1"; registered: exact@eip155:8453, exact@eip155:84532 Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
… schema (#1762) * Fix extra: null incompatibility between Python facilitator and TypeScript Zod schema * fix optional strings * fixed outdated eth_account._utils.typed_transactions import
* feat: add dynamic routing to bazaar
* feat: fixed format/linter errors
* fix: access routeConfig.config.settlementFailedResponseBody after getRouteConfig return type change
getRouteConfig now returns { config: RouteConfig; pattern: string } instead of RouteConfig
directly. The buildSettlementFailureResponse call site was not updated, causing
settlementFailedResponseBody callbacks to be silently skipped after settlement failures.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: updated param logic
* feat: added typescript, python and go bazaar server examples
* feat: updated e2e bazaar facilitators
* fix: add pathParams if not set
* fix: lint in python
* fix: typescript examples lock
* feat: pr feedback
* feat: pr feedback
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Generated-By: mintlify-agent Mintlify-Source: dashboard-editor Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
#1421) * feat(go): add net/http standard library adapter for payment middleware * feat(go): add PaymentMiddlewareFromHTTPServer, example server, and e2e tests
* feat(go/http): add Echo framework middleware adapter for x402 payment handling * feat(go): add example server and e2e tests for echo
) Add mUSD (0x118917a40FAF1CD7a13dB0Ef56C86De7973Ac503) as the default stablecoin for Mezo Testnet (eip155:31611) across all three SDKs: - TypeScript: scheme.ts stablecoins map - Go: constants.go NetworkConfigs map - Python: constants.py NETWORK_CONFIGS dict mUSD uses Permit2 transfer method (no EIP-3009) with EIP-2612 support. EIP-712 domain: name='Mezo USD', version='1', decimals=18.
* feat(evm): add Stable mainnet (chain ID 988) network support * chore: add changelog fragments for Stable mainnet support * feat(evm): add Stable mainnet to Go v1 legacy network config
* Add Fastify framework adapter for x402 payment middleware * fix(fastify): preserve settlement response bytes and resource URLs * chore(fastify): regenerate lockfiles for @x402/fastify workspace package The pnpm-lock.yaml files in typescript/ and examples/typescript/ were missing entries for the @x402/fastify package, causing CI to fail with ERR_PNPM_OUTDATED_LOCKFILE on every workflow. * feat(fastify): add e2e test server Adds a Fastify server to the e2e test suite, following the same pattern as Express and Hono. The test framework auto-discovers it via test.config.json. Includes all standard endpoints: /protected (EVM), /protected-svm, /protected-aptos, /protected-permit2, /protected-permit2-erc20, /protected-stellar, /health, /close. * ci(fastify): add npm publishing workflow Adds workflow_dispatch publishing workflow for @x402/fastify, matching the pattern used by @x402/express and @x402/hono.
* feat: improved e2e suite * feat: normalize e2e server paths * feat: refactored path structure to /scheme/implementation/test format
* fix gin streaming * fix e2e and echo/nethttp FacilitatorResponseError
* chore(go): release v2.14.0 * chore(go): release v2.14.0
…#2375) executeSettle submits the settle(receiver, token) transaction via writeContract with no explicit gas, so viem auto-estimates immediately before broadcasting. The on-chain settle is bimodal: it early-returns (~25.5k gas) when totalClaimed == totalSettled, and performs an SSTORE plus an ERC-20 transfer (~57k gas) otherwise. The eth_estimateGas viem runs is an independent RPC call that can resolve against a node whose state has not yet caught up to the just-mined claim; it then estimates the early-return path, the transaction is broadcast under-gassed, and it reverts out of gas once the claim is visible. Observed intermittently on Base mainnet (settle gasLimit == gasUsed, reverted). settle's cost is bounded -- one SSTORE plus one transfer, no loop, so it does not scale with voucher or channel count -- so a fixed limit is correct. SETTLE_GAS_LIMIT (120_000n) leaves ~2x margin over the transfer-path cost. deposit-permit2.ts already uses this explicit-gas pattern. Adds a unit test asserting executeSettle passes an explicit gas to writeContract. Refs #2374
* fix(python): run failure hooks after after-hook errors * chore(python): add changelog for failure hooks fix
…2045) (#2078) Contributors currently have to read test source code to discover which env vars the integration suites need. This PR closes that gap across the three SDK CONTRIBUTING.md files and adds the missing .env.example referenced by the Go guide. - go/.env.example: new template covering EVM_*/SVM_* vars, mirrored from the env names read in go/test/integration/evm_test.go and svm_test.go. The Go CONTRIBUTING.md already walks through `cp .env.example .env` at line 217, but the template file didn't exist on disk -- this wires up the walkthrough. - python/CONTRIBUTING.md: new "Integration Tests" subsection under Testing, pointing to the existing autoloader in tests/conftest.py and listing the EVM_*/SVM_* vars read by tests/integrations/test_evm.py, test_mcp_evm.py, and test_svm.py. - typescript/CONTRIBUTING.md: Integration Tests section now enumerates the env vars consumed by @x402/evm, @x402/svm, Stellar, and Aptos suites, with a note pointing at each package's test/integrations/*.ts file as the authoritative list. All three additive documentation changes are scoped per-SDK; no code or test behavior changes. Closes #2045. Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
* add svm smart wallet e2e test * add to testnet facilitator
Generated-By: mintlify-agent Mintlify-Source: dashboard-editor Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
* feat: add builder-code extension for ERC-8021 attribution in x402 payments Adds a new builder-code extension that enables ERC-8021 Schema 2 attribution tracking for x402 payments. Three parties can attach their builder code to settlement transactions: - Agent (client): sets the "a" field via BuilderCodeClientExtension - Service (server): declares in 402 response via declareBuilderCodeExtension() - Facilitator: adds to "s" array at settlement via BuilderCodeFacilitatorExtension At settlement, the facilitator encodes all builder codes as a Schema 2 CBOR suffix and appends it to the transferWithAuthorization calldata. The EVM ignores trailing calldata bytes, so the transfer executes normally while indexers (Coindexer, Beacon, Dune) can parse the suffix. Changes: - New extension package: @x402/extensions/builder-code - EVM mechanism: executeTransferWithAuthorization accepts optional calldataSuffix - settleEIP3009 reads builder code extension from FacilitatorContext - scheme.ts passes context through to EIP-3009 settlement * refactor: service as app (a), facilitator as wallet (w), remove client extension - Service declares its builder code as "a" (app) — it's the application exposing the x402 endpoint - Facilitator adds its code as "w" (wallet) — it's the entity that signs and broadcasts the settlement transaction - Service can optionally include related on-chain services in "s" array (e.g., Morpho, Aerodrome) - Remove BuilderCodeClientExtension — agent doesn't attach builder codes, the service's extension data passes through untouched - CBOR encoder now handles "a", "w", and "s" fields * feat: EIP-3009 builder-code support in facilitator + examples * refactor * add facilitator validation * add ts examples * add client extension * cleanup refactor * fix format * add builder codes to permit2, upto, batch-settlement * add unit tests * remove paymentRequiredExtensions * validate extension echo --------- Co-authored-by: Peter Kim <peter.kim@coinbase.com> Co-authored-by: Philippe d'Argent <p.dargent@cern.ch>
Co-authored-by: samsamtrum <samsamtrum@users.noreply.github.com>
* fix: mcp support for x402 v1 * fix: lock * fix: format
* feat: reject eoas as assets * fix: pr feedback
* fix settlementOverrides for next * add changeset * Strip SETTLEMENT_OVERRIDES_HEADER on all exit paths, not just success * pr feedback
* improve client error surfacing * pr feedback
* Update docs/getting-started/quickstart-for-buyers.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/getting-started/quickstart-for-buyers.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
* Update docs/extensions/builder-code.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/docs.json Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/overview.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/overview.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/sdk-features.md Generated-By: mintlify-agent Mintlify-Source: dashboard-editor --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
* fix extension echo * fix tests * add changeset * fix tests * fix tests
* add workflow checking verified commits * fix fmt
* prepare py releases * fix pr resolution * improve changelog * improve changelog * fix fmt * change cron time * fix verified commits action
* mirror TS core + evm changes for builder-code * add builde code extension * add examples * fix signers * fix upto client * fix fmt * add comment for v1 payload
* Update docs/sdk-features.md Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/builder-code.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/builder-code.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/builder-code.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/builder-code.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor * Update docs/extensions/overview.mdx Generated-By: mintlify-agent Mintlify-Source: dashboard-editor --------- Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
…ct scheme (#829) Document the outcome-based payment model and Sponsor Acceptance Policy for the exact scheme on Solana, aligned with the merged simulation-based smart wallet verification: - Reframe as outcome-based payment semantics with explicit terminology (client, merchant, sponsor, fee payer, smart wallet) - Add normative Exact Payment Outcome Definition, including exactly-one matching transfer and overpayment tolerance (>= required amount) - Add Sponsor Acceptance Policy (fee payer isolation, ALT visibility, compute budget caps, program allowlist, simulation rejection) - Document the two-path reference implementation (static fast path + simulation-based smart wallet path), path selection, and post-settlement TOCTOU verification - Add security invariants table (I1-I7) - Update static path instruction cap from 6 to 7 (third Lighthouse slot)
* prepare go releases * fix fmt * fix uppercase keys * ts releases * fix legacy * fix hedera * add versions check * improve changelog parsing * fix * fix attribution * add tags * remove unused files
Signed-off-by: Piotr Swierzy <piotr.swierzy@blockydevs.com>
Mezo mainnet launched with the canonical x402 contracts (Permit2 + Exact/Upto proxies) deployed at the same CREATE2 addresses as Base and Mezo testnet, so the SDKs can now offer mUSD as the chain's default stablecoin. Adds the eip155:31612 entry to all three SDK registries (TS DEFAULT_STABLECOINS, Go NetworkConfigs + ChainIDMezo, Python NETWORK_CONFIGS), mirroring the existing eip155:31611 testnet entry with only the token address and chain id differing. Field values were confirmed on-chain via ERC-5267 eip712Domain(): name "Mezo USD", version "1", chainId 31612; decimals()=18; EIP-2612 nonces() present (mUSD lacks EIP-3009, so transfers go through Permit2 with gasless EIP-2612 approval). No faucetUrl: mainnet has no faucet and the paywall faucet UI is testnet-gated. The Go constant is named ChainIDMezo (not ChainIDMezoMainnet) to match the unsuffixed-mainnet convention (ChainIDBase, ChainIDStable, ChainIDRadius, ChainIDHPP). Mainnet entries precede their testnet siblings in every registry, matching the other chain families. gen/decimals.ts is the build:paywall output for the new 18-decimal entry (DEFAULT_ASSETS.md step 3). The nine paywall template bundles were deliberately NOT regenerated: a clean-HEAD rebuild already changes all nine (pre-existing drift on main, likely from a dependency bump after the last regen; check_paywall_template is now workflow_dispatch-only so PRs no longer enforce it), and the client bundles do not embed the decimals map, so they have no functional dependency on this change. Including them would mix ~MB of unrelated minifier churn into a 34-line chain addition. Validation: full TS suite (45 turbo tasks), pytest (1651 passed), go test -race, plus lint/format gates for all three languages, green on base and on this change. Tracked by x4-hyn9fv.4; Python display-amount 6-decimal hardcoding found during review filed as x4-4a6mr8.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Tests
Checklist