Packages
Autonomous payment capabilities for Raxol agents. Xochi cross-chain intent settlement, x402/MPP auto-pay, wallet management, and spending controls.
Current section
Files
Jump to
Current section
Files
lib/raxol/payments/req/agent_plugin.ex
defmodule Raxol.Payments.Req.AgentPlugin do
@moduledoc """
Builds a Req plugin function for use with `Raxol.Agent.Backend.HTTP`.
Returns a function that attaches `AutoPay` to a Req request, suitable
for passing as a `:req_plugins` entry to the agent backend.
## Usage
alias Raxol.Payments.Req.AgentPlugin
alias Raxol.Payments.{SpendingPolicy, Ledger}
{:ok, ledger} = Ledger.start_link()
plugin = AgentPlugin.auto_pay(
wallet: Raxol.Payments.Wallets.Env,
ledger: ledger,
policy: SpendingPolicy.dev(),
agent_id: :my_agent
)
# Pass to agent backend
backend_opts = [
api_key: "sk-...",
req_plugins: [plugin]
]
"""
alias Raxol.Payments.Req.AutoPay
@doc """
Build a Req plugin function that attaches auto-pay to HTTP requests.
The returned function has the signature `(Req.Request.t() -> Req.Request.t())`
and can be passed in the `:req_plugins` list to `Backend.HTTP`.
## Options
Same as `Raxol.Payments.Req.AutoPay.attach/2`:
- `:wallet` (required) -- module implementing `Raxol.Payments.Wallet`
- `:protocols` -- list of protocol atoms, default `[:x402, :mpp]`
- `:ledger` -- Ledger server for budget tracking (optional)
- `:policy` -- `SpendingPolicy` struct (required if ledger given)
- `:agent_id` -- identifier for ledger tracking (required if ledger given)
"""
@spec auto_pay(keyword()) :: (Req.Request.t() -> Req.Request.t())
def auto_pay(opts) do
fn req -> AutoPay.attach(req, opts) end
end
end