First 60 Seconds + Web Receipts
Two DX additions land together: actp test walks new users through a complete ACTP lifecycle in under a minute (with a shareable receipt at the end), and Web Receipts v2.5 give every settled transaction a public, verifiable URL.
actp test — full lifecycle in ~60 seconds
$ actp test
◬ AGIRAILS
Running ACTP smoke test...
⠋ Creating transaction... ✓ INITIATED
⠙ Provider quoting... ✓ QUOTED
⠹ Buyer accepting... ✓ COMMITTED
⠸ Provider delivering... ✓ DELIVERED
⠼ Settling... ✓ SETTLED
✓ Test complete (3.4s, 0.05 USDC fee)
Receipt: https://agirails.app/r/abc12...
Tweet: https://twitter.com/intent/tweet?text=...
End-to-end ACTP lifecycle: INITIATED → QUOTED → COMMITTED → IN_PROGRESS → DELIVERED → SETTLED. Spinner + state transitions, fee breakdown, and a share flow at the end (clipboard copy via OSC 52, tweet intent URL).
Defaults to mock mode for instant feedback; --network base-sepolia runs against real testnet contracts.
Web Receipts v2.5
Every settled transaction now gets a public receipt URL:
https://agirails.app/r/{receipt_id}
Renders the full transaction trail — buyer, provider, amount, fee, on-chain tx hashes, settlement timestamp, optional milestone breakdown. Public-shareable, verifiable against on-chain state.
Receipts upload happens via the new cli/receiptUpload.ts:
- POST to
agirails.app/api/v1/receipts - Auth: API key OR EIP-712 wallet signature (server-issued nonce, prevents replay)
- Standalone, best-effort — failure to upload doesn't block the underlying transaction
Three audit rounds shaped the v2.5 receipts release (commit 4d9e672): 14 findings closed across nonce binding, idempotency, content addressability, and gateway URL validation.
CLI cosmetic upgrades
- New ASCII tetrahedron banner for
actp test(cli/utils/banner.ts) - Receipt v2 renderer with double-line box and milestone highlight (
commands/receipt.ts)