xytara 3.9.2 → 3.9.4

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.
Files changed (2) hide show
  1. package/RELEASE_NOTES.md +4 -4
  2. package/package.json +1 -1
package/RELEASE_NOTES.md CHANGED
@@ -1,6 +1,6 @@
1
- `xytara` 3.9.2 says, for every paid resource in x402 discovery, how an unpaid call is answered and what the advertised `payTo` means, and sends the runtime's `PAYMENT-REQUIRED` header in standard base64.
1
+ `xytara` 3.9.4 keeps the signed bytes of every anchored attestation fetchable, across restarts and deploys.
2
2
 
3
- - **Payment transport per resource** — `resource_details[]` in the runtime's and the MCP executor's `/.well-known/x402` now carries `payment_transport`: `http-402` (HTTP 402 with a `PAYMENT-REQUIRED` header) or `mcp-tool-result` (x402 MCP transport: HTTP 200 with a payment-required tool result), plus a one-line `payment_transport_detail`. An indexer that probes only for HTTP 402 can tell a working MCP endpoint from an unpaid one.
4
- - **What `payTo` means** — `payment.pay_to` states that `payTo` is naxytra's settlement address for every paid call, provider-run tools included: it identifies who receives the payment, not who ran the call. Each provider's share is paid out to its own address by a weekly sweep once at least $1.00 is owed, and the signed delivery receipt names the provider that executed the call.
5
- - **`PAYMENT-REQUIRED` in standard base64** — the runtime encoded the header as base64url, which browser clients decoding with `atob()` reject. It is now standard base64, like `PAYMENT-RESPONSE` and the MCP executor; the verifier checks the encoding and that the header decodes to exactly the body's `payment_required`.
3
+ - **Attestation archive** — `POST /v1/attestations/archive { attestation }` stores an attestation durably and `GET /v1/attestations/:id` returns it byte-identical. Anyone may submit one, because only naxytra's own records are accepted: the signature must verify against the runtime's published keys (for its own attestations) or the MCP executor's published keys (for the executor's), and the attestation must carry an external anchoring binding (`ctp/1`). A delegation-log checkpoint is restored into the checkpoint store only if its head is a real head of this runtime's log, and a restored older checkpoint never replaces the current one.
4
+ - **MCP executor** — every attestation it issues with an external binding is archived on the runtime as it is issued. `GET /attestations/<id>` serves from memory, and falls back to the archive when the in-memory copy is gone (re-verified against the executor's own keys; the response says `source: "archive"`). `/health` reports archive counters.
5
+ - **Verifiers** — the delegation-log verifier covers the archive (own signed and anchored records only; idempotent; tampered, forged, foreign-issuer and fake-head records refused; executor keys); the executor verifier archives a bound attestation through a real runtime, wipes its in-memory copy, and gets it back byte-identical.
6
6
  - Client package (thin): unchanged.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xytara",
3
- "version": "3.9.2",
3
+ "version": "3.9.4",
4
4
  "description": "Client for the hosted naxytra runtime: discover a capability, pay per call with x402 (gasless USDC on Base) or credits, get the deliverable and a signed delivery receipt you can verify offline. The runtime is a hosted service; this package is the client.",
5
5
  "main": "client.js",
6
6
  "exports": {