agentscore-commerce 2.7.1__tar.gz → 2.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/workflows/security.yml +1 -1
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/PKG-INFO +1 -1
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/how_to_pay.py +2 -2
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/checkout.py +4 -4
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/agentscore_content.py +3 -3
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/llms_txt.py +9 -9
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/openapi.py +2 -2
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/skill_md.py +7 -7
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/pyproject.toml +1 -1
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_skill_md.py +6 -2
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/uv.lock +11 -11
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/dependabot.yml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/workflows/ci.yml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/workflows/publish.yml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.gitignore +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/CLAUDE.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/CODE_OF_CONDUCT.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/CONTRIBUTING.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/LICENSE +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/README.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/SECURITY.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/_headers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/_mppx_receipt.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/_redis.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/_warnings.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/gate.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/http_signature.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/jwks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/request.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/types.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/verify.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/api/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/accepted_methods.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/agent_instructions.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/agent_memory.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/body.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/identity.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/pricing.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/receipt.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/respond_402.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/validation_error.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/checkout_compute_first.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/checkout_hooks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/bazaar.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/probe.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/redemption_md.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/robots_tag.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/well_known.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/well_known_mpp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/well_known_x402.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/errors.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/forwarded_proto.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/_denial.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/_response.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/a2a.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/address.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/aiohttp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/cache.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/core.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/default_denied.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/django.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/fastapi.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/flask.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/middleware.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/policy.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/py.typed +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/sanic.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/sessions.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/signer.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/tokens.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/types.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/ucp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/ucp_jwks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/_core.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/aiohttp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/asgi.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/django.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/fastapi.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/flask.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/sanic.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/amounts.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/compose_rails.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/constants.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/default_rails.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/directive.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/dispatch.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/headers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/idempotency.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/lazy.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/mppx_failures.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/mppx_server.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/network_kind.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/networks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/payment_header.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/rail_spec.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/rails.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/settlement_override.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/signer.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/solana.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/usdc.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/wwwauthenticate.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402_server.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402_settle.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402_validation.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/zero_settle.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/py.typed +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/quote_cache.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/mppx_stripe.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/pay_to_address.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/payment_intent.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/pi_cache.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/simulate_deposit.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/stripe_multichain/simulate_dispatch.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/README.md +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/api_provider.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/compliance_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/compute_first_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/identity_only.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/multi_rail_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/per_product_policy_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/signed_ucp_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/examples/stripe_multichain_merchant.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/lefthook.yml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/osv-scanner.toml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/ruff.toml +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/scripts/regenerate_cross_lang_fixtures.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/__init__.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/conftest.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-agentscore-gate-blocked.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-agentscore-gate-full.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-capability.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-emoji-keys.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-es256-rails.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-extras-int.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-int-boundary.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-minimal.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-multikey.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/node-unicode.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-agentscore-gate-blocked.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-agentscore-gate-full.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-capability.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-emoji-keys.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-es256-rails.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-extras-int.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-int-boundary.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-minimal.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-multikey.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/fixtures/cross-lang/py-unicode.json +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_a2a.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_a2a_jws_roundtrip.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_address.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_agent_memory_emitter.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aiohttp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_adapters.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_agent_memory.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_checkout.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_gate.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_http_signature.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_jwks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_presentation.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_request.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_types.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_aip_verify.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_amounts.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_api_reexport.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_cache.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_challenge.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_compute_first.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_compute_first_adapters.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_compute_first_ofac.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_compute_first_settle.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_coverage_gaps.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_signer_match.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_checkout_wallet_ofac_default.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_classify_orchestration_error.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_compose_rails.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_core.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_coverage_fillers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_credential_precheck.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_default_denied.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_default_rails.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_default_read_only_on_denied.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_denial.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_discovery.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_dispatch.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_django.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_extract_owner_scope.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_fastapi.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_flask.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_forwarded_proto.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_gate_quota_info.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_get_signer_verdict.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_idempotency_helper.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_integration.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_internal_helpers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_lifted_helpers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_load_ucp_signing_key_from_env.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_middleware.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_mppx_failures.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_mppx_receipt.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_network_kind.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_operator_handle.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_pay_to_address.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_directive.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_dispatch.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_handlers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_header.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_headers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_misc.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_servers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_payment_signer.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_policy.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_pricing.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_public_surface.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_quote_cache.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_quote_cache_redis.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_rail_spec.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_rate_limit.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_redis_internal.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_response.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_robots_tag.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_sanic.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_seamless_helpers.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_sessions.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_signer_match.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_signer_verdict_request_scoped.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_simulate_dispatch.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_solana.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_solana_mpp_rail_spec_post_init.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_stripe_multichain.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_tokens.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_ucp.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_ucp_cross_lang.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_ucp_jwks.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_validation_error.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_x402_settle_extra.py +0 -0
- {agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/tests/test_zero_settle.py +0 -0
|
@@ -24,7 +24,7 @@ jobs:
|
|
|
24
24
|
|
|
25
25
|
- name: Install osv-scanner
|
|
26
26
|
run: |
|
|
27
|
-
curl -fsSL https://github.com/google/osv-scanner/releases/download/v2.
|
|
27
|
+
curl -fsSL https://github.com/google/osv-scanner/releases/download/v2.5.1/osv-scanner_linux_arm64 -o osv-scanner
|
|
28
28
|
chmod +x osv-scanner
|
|
29
29
|
|
|
30
30
|
- name: Scan dependencies
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentscore-commerce
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.2
|
|
4
4
|
Summary: Agentic commerce SDK for Python: identity middleware (FastAPI, Flask, Django, AIOHTTP, Sanic, ASGI) + payment helpers + 402 builders + discovery + Stripe multichain. The full merchant-side toolkit for AgentScore-powered agentic commerce.
|
|
5
5
|
Project-URL: Homepage, https://www.agentscore.com
|
|
6
6
|
Project-URL: Repository, https://github.com/agentscore/python-commerce
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/how_to_pay.py
RENAMED
|
@@ -104,7 +104,7 @@ async def build_how_to_pay(
|
|
|
104
104
|
"what_it_does": (
|
|
105
105
|
f"Hits this endpoint, receives this same 402, signs the MPP challenge on {network_name}, and "
|
|
106
106
|
"submits the credential back via Authorization: Payment. Either client (tempo request or "
|
|
107
|
-
"agentscore-pay pay --chain tempo) works
|
|
107
|
+
"agentscore-pay pay --chain tempo) works; both run the full MPP handshake."
|
|
108
108
|
),
|
|
109
109
|
}
|
|
110
110
|
if recommend == "both":
|
|
@@ -203,7 +203,7 @@ async def build_how_to_pay(
|
|
|
203
203
|
)
|
|
204
204
|
elif link_cli_blocked:
|
|
205
205
|
stripe_block["note"] = (
|
|
206
|
-
"link-cli SPT path not available for this purchase
|
|
206
|
+
"link-cli SPT path not available for this purchase: Stripe link-cli caps spend requests at $500.00 "
|
|
207
207
|
f"($50000 cents); your total is ${total_num}. Use your own Stripe account with the SharedPaymentToken "
|
|
208
208
|
"API instead."
|
|
209
209
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""High-level Checkout orchestrator; composes 402-emit + verify+settle.
|
|
2
2
|
|
|
3
|
-
The Checkout primitive collapses the
|
|
3
|
+
The Checkout primitive collapses the agentic-commerce dance (emit 402 →
|
|
4
4
|
verify+settle on retry → respond) into a single ``await
|
|
5
5
|
checkout.handle(request)`` call. It services every merchant shape:
|
|
6
6
|
|
|
@@ -30,7 +30,7 @@ Domain-neutral by design: every per-request value is keyed by
|
|
|
30
30
|
``reference_id`` (a UUID minted on first contact). Goods merchants persist
|
|
31
31
|
this as their order id; API merchants treat it as a per-call request id.
|
|
32
32
|
|
|
33
|
-
Usage (goods seller, full
|
|
33
|
+
Usage (goods seller, full agentic-commerce flow)::
|
|
34
34
|
|
|
35
35
|
checkout = Checkout(
|
|
36
36
|
rails={
|
|
@@ -811,7 +811,7 @@ def _strip_payment_headers_from_raw(raw: Any) -> Any:
|
|
|
811
811
|
|
|
812
812
|
|
|
813
813
|
class Checkout:
|
|
814
|
-
"""High-level
|
|
814
|
+
"""High-level agentic-commerce orchestrator.
|
|
815
815
|
|
|
816
816
|
Composes :func:`build_accepted_methods`, :func:`build_how_to_pay`,
|
|
817
817
|
:func:`respond_402`, :func:`verify_x402_request`, and
|
|
@@ -1116,7 +1116,7 @@ class Checkout:
|
|
|
1116
1116
|
return None
|
|
1117
1117
|
|
|
1118
1118
|
async def handle(self, request: CheckoutRequest) -> CheckoutResult:
|
|
1119
|
-
"""One-call
|
|
1119
|
+
"""One-call agentic-commerce flow.
|
|
1120
1120
|
|
|
1121
1121
|
* x402 ``X-Payment`` header present → verify, settle via ``x402_server``,
|
|
1122
1122
|
run ``on_settled`` hook, return 200 with the hook's body (or
|
|
@@ -101,7 +101,7 @@ def build_agentscore_onboarding_steps(
|
|
|
101
101
|
compatible_fragment = ", ".join(hint for rail, hint in compatible_hints if rail in accepted_rails)
|
|
102
102
|
|
|
103
103
|
compatible_clients_clause = (
|
|
104
|
-
f"the rails table also lists per-rail `compatible_clients
|
|
104
|
+
f"the rails table also lists per-rail `compatible_clients`: {compatible_fragment}. "
|
|
105
105
|
if compatible_fragment
|
|
106
106
|
else ""
|
|
107
107
|
)
|
|
@@ -114,7 +114,7 @@ def build_agentscore_onboarding_steps(
|
|
|
114
114
|
)
|
|
115
115
|
bootstrap_step = (
|
|
116
116
|
"First-run only: bootstrap wallet + Passport. Run `agentscore-pay agent-guide --json` "
|
|
117
|
-
"for the canonical cold-start path
|
|
117
|
+
"for the canonical cold-start path; it walks `agentscore-pay init` "
|
|
118
118
|
"(creates keystore + per-chain wallet), `agentscore-pay passport login` "
|
|
119
119
|
f"(one-time KYC{'; required for this merchant' if requires_kyc else ''}; "
|
|
120
120
|
"the human completes a verify URL once and pay caches the operator_token), "
|
|
@@ -123,7 +123,7 @@ def build_agentscore_onboarding_steps(
|
|
|
123
123
|
)
|
|
124
124
|
stripe_fallback_step = (
|
|
125
125
|
"If your only payment method is a Stripe / Link card (no crypto), install `@stripe/link-cli` "
|
|
126
|
-
"instead of agentscore-pay and use it on the SPT rail. Identity gating still applies
|
|
126
|
+
"instead of agentscore-pay and use it on the SPT rail. Identity gating still applies: the "
|
|
127
127
|
"merchant's 403 with `verify_url` lets you bootstrap a Passport even with no crypto wallet involved."
|
|
128
128
|
)
|
|
129
129
|
returning_user_step = (
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/llms_txt.py
RENAMED
|
@@ -28,7 +28,7 @@ def llms_txt_identity_section(
|
|
|
28
28
|
aip_bullet = ""
|
|
29
29
|
if aip:
|
|
30
30
|
aip_bullet = (
|
|
31
|
-
"\n- **`Agent-Identity: <JWT>` + RFC 9421 signature
|
|
31
|
+
"\n- **`Agent-Identity: <JWT>` + RFC 9421 signature**: present an Agent Identity Token (AIP) "
|
|
32
32
|
"from a trusted issuer (AgentScore is always trusted). Short-lived and bound to your key; sign "
|
|
33
33
|
"the request (`Signature-Input` + `Signature` over `@method @authority @path agent-identity`, "
|
|
34
34
|
"tag `agent-identity`) to prove possession. No long-lived token on the wire. Mint one with "
|
|
@@ -50,13 +50,13 @@ def llms_txt_identity_section(
|
|
|
50
50
|
compliance_note = f"\n\nCompliance: {', '.join(parts)}."
|
|
51
51
|
return (
|
|
52
52
|
"## Identity\n\n"
|
|
53
|
-
"AgentScore identity is reusable across every AgentScore-gated merchant
|
|
53
|
+
"AgentScore identity is reusable across every AgentScore-gated merchant: one KYC, "
|
|
54
54
|
"no re-verification per site. Pick a header:\n\n"
|
|
55
|
-
"- **`X-Wallet-Address: 0x...` or base58
|
|
55
|
+
"- **`X-Wallet-Address: 0x...` or base58**: works on signing rails (Tempo, x402, "
|
|
56
56
|
"Solana MPP). The wallet you claim must sign the payment.\n"
|
|
57
|
-
"- **`X-Operator-Token: opc_
|
|
57
|
+
"- **`X-Operator-Token: opc_...`**: works on every rail, including Stripe SPT. "
|
|
58
58
|
f"Reusable across AgentScore merchants until expiry.{aip_bullet}\n"
|
|
59
|
-
"- **Neither
|
|
59
|
+
"- **Neither**: you get a 403 with `verify_url`. Complete the session flow once and "
|
|
60
60
|
f"reuse the resulting `opc_...` everywhere.{compliance_note}"
|
|
61
61
|
)
|
|
62
62
|
|
|
@@ -103,22 +103,22 @@ def _llms_txt_payment_section_compact(*, rails: list[str], app_url: str) -> str:
|
|
|
103
103
|
rails_list = list(rails)
|
|
104
104
|
if _has_rail_family(rails_list, "tempo-"):
|
|
105
105
|
lines.append(
|
|
106
|
-
"- **Tempo USDC via MPP
|
|
106
|
+
"- **Tempo USDC via MPP**: "
|
|
107
107
|
f"`tempo request -X POST -H \"X-Operator-Token: opc_...\" --json '{{...}}' --max-spend N {app_url}`"
|
|
108
108
|
)
|
|
109
109
|
if _has_rail_family(rails_list, "x402-base-"):
|
|
110
110
|
lines.append(
|
|
111
|
-
f"- **x402 USDC on Base** (EIP-3009)
|
|
111
|
+
f"- **x402 USDC on Base** (EIP-3009): `agentscore-pay pay POST {app_url} --chain base "
|
|
112
112
|
"-H \"X-Operator-Token: opc_...\" -d '{...}'`"
|
|
113
113
|
)
|
|
114
114
|
if _has_rail_family(rails_list, "mpp-solana-"):
|
|
115
115
|
lines.append(
|
|
116
|
-
f"- **USDC on Solana
|
|
116
|
+
f"- **USDC on Solana**: `agentscore-pay pay POST {app_url} --chain solana "
|
|
117
117
|
"-H \"X-Operator-Token: opc_...\" -d '{...}'`"
|
|
118
118
|
)
|
|
119
119
|
if "stripe-spt" in rails_list:
|
|
120
120
|
lines.append(
|
|
121
|
-
"- **Stripe Shared Payment Token
|
|
121
|
+
"- **Stripe Shared Payment Token**: agent mints SPT (own Stripe account scoped to networkId, "
|
|
122
122
|
"OR `link-cli spend-request create --credential-type shared_payment_token --network-id "
|
|
123
123
|
"<profileId> ...`)"
|
|
124
124
|
)
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/openapi.py
RENAMED
|
@@ -233,7 +233,7 @@ def agentscore_denial_schemas() -> dict[str, Any]:
|
|
|
233
233
|
"token_expired → deliver_verify_url_and_poll, invalid_credential → "
|
|
234
234
|
"switch_token_or_restart_session, wallet_signer_mismatch → resign_or_switch_to_operator_token, "
|
|
235
235
|
"wallet_auth_requires_wallet_signing → switch_to_operator_token, wallet_not_trusted → "
|
|
236
|
-
"contact_support
|
|
236
|
+
"contact_support, for UNFIXABLE compliance only (sanctions/age/jurisdiction_restricted); "
|
|
237
237
|
"fixable reasons re-route to identity_verification_required, payment_required → contact_merchant)."
|
|
238
238
|
),
|
|
239
239
|
},
|
|
@@ -255,7 +255,7 @@ def agentscore_denial_schemas() -> dict[str, Any]:
|
|
|
255
255
|
"description": (
|
|
256
256
|
"Present for missing_identity / identity_verification_required / token_expired "
|
|
257
257
|
"denials. Agent shares this with the user to complete KYC or claim a wallet. "
|
|
258
|
-
"Not present on wallet_not_trusted (UNFIXABLE compliance
|
|
258
|
+
"Not present on wallet_not_trusted (UNFIXABLE compliance, so re-verification "
|
|
259
259
|
"won't change the outcome)."
|
|
260
260
|
),
|
|
261
261
|
},
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/skill_md.py
RENAMED
|
@@ -124,7 +124,7 @@ _RAIL_NOTES: dict[str, str] = {
|
|
|
124
124
|
"USDC (SPL). Use `agentscore-pay pay --chain solana`; MPP credential goes in `Authorization: Payment`."
|
|
125
125
|
),
|
|
126
126
|
"stripe": (
|
|
127
|
-
"Card via Link wallet. Use `@stripe/link-cli
|
|
127
|
+
"Card via Link wallet. Use `@stripe/link-cli`; `agentscore-pay` emits the "
|
|
128
128
|
"handoff hint when this rail is picked."
|
|
129
129
|
),
|
|
130
130
|
}
|
|
@@ -141,7 +141,7 @@ def _validate(input: _SkillCtx) -> None:
|
|
|
141
141
|
raise ValueError(f"build_skill_md: name must be 1-{_NAME_MAX} characters (got {len(n) if n else 0})")
|
|
142
142
|
if not _NAME_RE.match(n):
|
|
143
143
|
raise ValueError(
|
|
144
|
-
f'build_skill_md: name "{n}" is invalid
|
|
144
|
+
f'build_skill_md: name "{n}" is invalid: must be lowercase alphanumeric and hyphens, '
|
|
145
145
|
"no leading/trailing/consecutive hyphens (agentskills.io spec)"
|
|
146
146
|
)
|
|
147
147
|
if not input.description:
|
|
@@ -232,7 +232,7 @@ def _payment_section(input: _SkillCtx) -> str:
|
|
|
232
232
|
clients[r] = defaults.get(r, [])
|
|
233
233
|
rows = ["| Rail | Notes | Compatible clients |", "|---|---|---|"]
|
|
234
234
|
for r in input.accepted_rails:
|
|
235
|
-
client_list = ", ".join(clients.get(r, [])) or "
|
|
235
|
+
client_list = ", ".join(clients.get(r, [])) or "none"
|
|
236
236
|
rows.append(f"| **{_RAIL_LABELS[r]}** | {_RAIL_NOTES[r]} | {client_list} |")
|
|
237
237
|
intro = (
|
|
238
238
|
"Each gated route returns a 402 with `WWW-Authenticate` + `PAYMENT-REQUIRED` "
|
|
@@ -276,12 +276,12 @@ def _identity_section(input: _SkillCtx) -> str:
|
|
|
276
276
|
"\n\nThis merchant accepts AIP Agent Identity Tokens. If you hold an AIT from a trusted issuer "
|
|
277
277
|
"(AgentScore is always trusted), present the JWT in an `Agent-Identity` header plus an RFC 9421 "
|
|
278
278
|
"HTTP Message Signature (`Signature-Input` + `Signature` over `@method @authority @path agent-identity`, "
|
|
279
|
-
"tag `agent-identity`) signed with the token-bound cnf key
|
|
279
|
+
"tag `agent-identity`) signed with the token-bound cnf key, satisfying identity in one round trip, "
|
|
280
280
|
"no separate AgentScore credential needed. `agentscore-pay pay --identity aip` does this automatically."
|
|
281
281
|
)
|
|
282
282
|
denial_note = (
|
|
283
|
-
"Denial bodies carry an `agent_instructions` block describing the recovery action "
|
|
284
|
-
"
|
|
283
|
+
"Denial bodies carry an `agent_instructions` block describing the recovery action. "
|
|
284
|
+
"Read the `action` field and follow it. See the identity-bootstrap skill for the "
|
|
285
285
|
"canonical denial-code → action table."
|
|
286
286
|
)
|
|
287
287
|
return "\n".join(
|
|
@@ -375,7 +375,7 @@ def build_skill_md(
|
|
|
375
375
|
support_links: list[SkillMdLink] | None = None,
|
|
376
376
|
refresh_footer: bool = True,
|
|
377
377
|
) -> str:
|
|
378
|
-
"""Render an agentskills.io-compatible ``skill.md`` for an
|
|
378
|
+
"""Render an agentskills.io-compatible ``skill.md`` for an agentic-commerce merchant.
|
|
379
379
|
|
|
380
380
|
Output is YAML frontmatter (``name`` / ``description`` / optional ``license`` /
|
|
381
381
|
``compatibility`` / ``allowed-tools`` / ``metadata``) followed by markdown sections
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentscore-commerce"
|
|
7
|
-
version = "2.7.
|
|
7
|
+
version = "2.7.2"
|
|
8
8
|
description = "Agentic commerce SDK for Python: identity middleware (FastAPI, Flask, Django, AIOHTTP, Sanic, ASGI) + payment helpers + 402 builders + discovery + Stripe multichain. The full merchant-side toolkit for AgentScore-powered agentic commerce."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -253,12 +253,16 @@ class TestPaymentSection:
|
|
|
253
253
|
assert "rogue-cli" not in out
|
|
254
254
|
assert "Stripe Shared Payment Token" not in out
|
|
255
255
|
|
|
256
|
-
def
|
|
256
|
+
def test_renders_none_when_clients_empty(self) -> None:
|
|
257
|
+
# "none" rather than an em-dash: this table is served on every store's
|
|
258
|
+
# skill.md, and the org rule bars em-dashes on external surfaces. Kept
|
|
259
|
+
# identical to the Node SDK, which renders the same table.
|
|
257
260
|
cfg = _base()
|
|
258
261
|
cfg["accepted_rails"] = ["x402_base"]
|
|
259
262
|
cfg["compatible_clients"] = {"x402_base": []}
|
|
260
263
|
out = build_skill_md(**cfg)
|
|
261
|
-
assert re.search("x402 on Base
|
|
264
|
+
assert re.search(r"x402 on Base.+\| none", out)
|
|
265
|
+
assert "—" not in out
|
|
262
266
|
|
|
263
267
|
|
|
264
268
|
class TestIdentitySection:
|
|
@@ -13,7 +13,7 @@ prerelease-mode = "disallow"
|
|
|
13
13
|
|
|
14
14
|
[[package]]
|
|
15
15
|
name = "agentscore-commerce"
|
|
16
|
-
version = "2.7.
|
|
16
|
+
version = "2.7.2"
|
|
17
17
|
source = { editable = "." }
|
|
18
18
|
dependencies = [
|
|
19
19
|
{ name = "agentscore-py" },
|
|
@@ -131,14 +131,14 @@ dev = [
|
|
|
131
131
|
|
|
132
132
|
[[package]]
|
|
133
133
|
name = "agentscore-py"
|
|
134
|
-
version = "2.6.
|
|
134
|
+
version = "2.6.6"
|
|
135
135
|
source = { registry = "https://pypi.org/simple" }
|
|
136
136
|
dependencies = [
|
|
137
137
|
{ name = "httpx" },
|
|
138
138
|
]
|
|
139
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
139
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3b/2d/51bcf54136a51c82570a825fc65e554a46c08ed4f603ab95bcf4b028d5a0/agentscore_py-2.6.6.tar.gz", hash = "sha256:710b8f3c13f014911beb39913a526f99783d2a8e817beaf85771c8d9cc821210", size = 67383, upload-time = "2026-08-21T08:44:49.577Z" }
|
|
140
140
|
wheels = [
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/07/f9/824626fa733246fcba5d4ba985d7142708a5d719dca1b0a69a8db8ef237a/agentscore_py-2.6.6-py3-none-any.whl", hash = "sha256:27e8c412fa4ede62b5d06c6d4c1bbe6763a9deaef0e33390148c22dd317aa58b", size = 22378, upload-time = "2026-08-21T08:44:48.187Z" },
|
|
142
142
|
]
|
|
143
143
|
|
|
144
144
|
[[package]]
|
|
@@ -1894,15 +1894,15 @@ wheels = [
|
|
|
1894
1894
|
|
|
1895
1895
|
[[package]]
|
|
1896
1896
|
name = "lefthook"
|
|
1897
|
-
version = "2.1.
|
|
1897
|
+
version = "2.1.11"
|
|
1898
1898
|
source = { registry = "https://pypi.org/simple" }
|
|
1899
1899
|
wheels = [
|
|
1900
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1901
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1902
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1903
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1904
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1905
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1900
|
+
{ url = "https://files.pythonhosted.org/packages/5c/3b/3dc3e68960986ffd5380bd84111008c20c2f0e1b8c121b71d65253ddd92b/lefthook-2.1.11-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:a4b54f149e3dba520456df82d0e1a84958082b4a15dd7acf2c129727528e01bc", size = 5426206, upload-time = "2026-08-21T08:18:20.476Z" },
|
|
1901
|
+
{ url = "https://files.pythonhosted.org/packages/07/38/54c1ee7116a9b2f5a854f8686a6e8cf755aa638460f3d09b1626b9b248c5/lefthook-2.1.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:16c76f244d37a35eba82046b60e47791e4bd006235007c5e88a7df49223b6652", size = 4949297, upload-time = "2026-08-21T08:18:23.077Z" },
|
|
1902
|
+
{ url = "https://files.pythonhosted.org/packages/e8/e4/3f9b7446cb05602fdd1155dbbc2ac31c0000224b4ee75026bceba078e786/lefthook-2.1.11-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:ed5ed8702e03409251ba6ec52179a438fb65c21843b004bbabdd0e22e12317b1", size = 4780005, upload-time = "2026-08-21T08:18:24.471Z" },
|
|
1903
|
+
{ url = "https://files.pythonhosted.org/packages/21/5f/df23da9414245591094fb0e07a3e8e6fa938f51b568b21f6b4fa07b5896a/lefthook-2.1.11-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:7207f6e0d5da75ca69794532edc36dacf0e3e141b54d92c8e195c07f16171a60", size = 5359796, upload-time = "2026-08-21T08:18:25.766Z" },
|
|
1904
|
+
{ url = "https://files.pythonhosted.org/packages/3c/8f/f9307859a9351b450b0e06b409526fb0ce31023fcd7f9f9e04727bc52313/lefthook-2.1.11-py3-none-win_amd64.whl", hash = "sha256:332639455dd7f725dc1d3d9817397b91a76ccc72dfeb65b5dcf4189e4be443f6", size = 5507966, upload-time = "2026-08-21T08:18:27.184Z" },
|
|
1905
|
+
{ url = "https://files.pythonhosted.org/packages/e6/6a/a4ce63a9ae841def7321ca09a446c213d9c7b465e5bb4f7edf9ea4052c63/lefthook-2.1.11-py3-none-win_arm64.whl", hash = "sha256:d82b86c6cb59cfe536adde34c7178ab31b5d5504043ee713fd808556baeeb701", size = 4860496, upload-time = "2026-08-21T08:18:28.803Z" },
|
|
1906
1906
|
]
|
|
1907
1907
|
|
|
1908
1908
|
[[package]]
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/ISSUE_TEMPLATE/bug_report.md
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/.github/ISSUE_TEMPLATE/feature_request.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/_mppx_receipt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/aip/http_signature.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/body.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/identity.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/pricing.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/receipt.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/challenge/respond_402.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/checkout_hooks.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/__init__.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/bazaar.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/probe.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/robots_tag.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/discovery/well_known.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/forwarded_proto.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/__init__.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/_denial.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/_response.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/address.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/aiohttp.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/cache.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/core.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/django.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/fastapi.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/flask.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/middleware.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/policy.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/py.typed
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/sanic.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/sessions.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/signer.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/tokens.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/identity/ucp_jwks.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/__init__.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/_core.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/aiohttp.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/asgi.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/django.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/fastapi.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/flask.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/middleware/sanic.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/__init__.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/amounts.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/compose_rails.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/constants.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/default_rails.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/directive.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/dispatch.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/headers.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/idempotency.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/mppx_failures.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/mppx_server.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/network_kind.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/networks.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/rail_spec.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/rails.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/signer.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/solana.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402_server.py
RENAMED
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/x402_settle.py
RENAMED
|
File without changes
|
|
File without changes
|
{agentscore_commerce-2.7.1 → agentscore_commerce-2.7.2}/agentscore_commerce/payment/zero_settle.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|