xytara 3.4.0 → 3.6.0

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.
package/README.md CHANGED
@@ -135,8 +135,23 @@ POST /v1/credits/agents/:id/revoke owner key only; immediate; { reason } is stor
135
135
  GET /v1/credits/activity?limit=100&since=<iso>
136
136
  recent spends with agent id/label, units, task_ref, tool_name,
137
137
  credit_spend_id; owner sees the account, an agent sees its own
138
+ GET /v1/credits/agents/log the delegation log: every mint and revoke of the account's agent
139
+ keys (full events); an agent key sees only its own
140
+ GET /v1/credits/agents/:id/proof delegation proof for one key: its events, the hash-only chain to
141
+ the head, the signed checkpoint, how to verify
142
+ GET /v1/delegation-log/head public: event count, head hash, chain continuity
143
+ GET /v1/delegation-log/feed public: seq, type, time and hashes only (never an account or key)
144
+ GET /v1/delegation-log/checkpoint public: naxytra-attestation/1 over the head (+ ctp/1 binding
145
+ while anchoring); POST .../checkpoint/verify is a free check
138
146
  ```
139
147
 
148
+ Every mint and revoke is an append-only, hash-chained event (`naxytra-delegation-log/1`:
149
+ `event_sha256 = sha256(JCS(event))`, `chain_hash = sha256(previous chain_hash + event_sha256)`).
150
+ A relying party holding a key's delegation proof and a checkpoint can establish, without asking
151
+ this runtime, that the key was minted with these caps before T and not revoked before a head
152
+ anchored after T. Set `XYTARA_EXTERNAL_BINDING_JSON` while a chronology anchoring session is open
153
+ and every checkpoint carries the binding inside its signed bytes.
154
+
140
155
  An agent key spends exactly like the owner key (`/v1/economics/rails/credits/consume`, or
141
156
  `credits_first` execution), but every spend is checked against its per-call, per-UTC-day and
142
157
  lifetime caps, its tool allow-list, its expiry and revocation. Refusals are explicit and never
package/RELEASE_NOTES.md CHANGED
@@ -1,9 +1,6 @@
1
- `xytara` 3.4.0 makes the open provider network pay correctly at the current price, anchors attestations in time, and gives buyers a console.
1
+ `xytara` 3.6.0 lets open-network providers price what they sell.
2
2
 
3
- - **Provider revenue at the $0.01 price** — a provider's exact share (`settled × bps / 10000`) is now credited in whole cents with the sub-cent remainder carried into its next settlement (`rollup.share_carry_bp`; ledger rows record `share_carry_before_bp` / `share_carry_after_bp`), so a 70% provider earns 7 cents over ten $0.01 calls instead of flooring to zero on every call. Nothing changes for whole-cent amounts.
4
- - **Payout sweep** — `POST /v1/provider-network/payouts/sweep` (operator) pays every active provider whose available balance reaches `XYTARA_PROVIDER_PAYOUT_MIN_MINOR` (default 100 cents) through the signer, one idempotent dispatch each; a weekly job runs it (Mondays, `state-backup.yml`). Activation through the operator route now requires a `payout_address` on the record (`payout_address_required_for_activation`).
5
- - **Delivery rule** — a provider's 2xx without `result.output`, `output_payload` or `output` is `external_execution_empty_output`: not charged, nothing accrues, not retried elsewhere. Routing prefers the most specific capability match (tool name over task ref over integration), then reputation. Providers rotate their `owner_secret` at `POST /v1/provider-network/providers/:id/rotate-secret`. The public contract (`/v1/provider-network/contract`) states all of this.
6
- - **Operator visibility** — the daily report lists pending provider registrations (and flags a missing payout address) and the network's owed/accrued/paid totals, and fails (emails) while a registration waits.
7
- - **Attestation external bindings** — `bindings[]` inside the signed bytes may carry `{ scheme: "ctp/1", system_id, tag }`, a chronology-protocol binding tag set with `MCP_EXECUTOR_EXTERNAL_BINDING_JSON` on the MCP executor while an anchoring session is open; the active binding is shown on `/.well-known/delivery-receipt-keys` and `/health`. `GET /attestations/<id>` and `POST /attestations/verify` return `attestation_sha256` (SHA-256 of the JCS form, signatures included), the digest an external anchor commits to.
8
- - **Buyer console** — `https://www.naxytra.com/console`: paste a spend key to read the balance, the credit activity and the agent keys straight from the runtime, and mint or revoke agent keys; the key stays in the browser.
9
- - Client package (thin): adds `attestationSha256`, `normalizeExternalBinding`, `EXTERNAL_BINDING_SCHEMES`; tarball otherwise unchanged.
3
+ - **Provider offers** — a provider registers `offers: [{ tool_name | task_ref, title, description?, price_usd }]` (whole cents, $0.01–$100.00, up to 50, selectors it declared). A call routed to that provider for an offered capability is quoted at the offer: the x402 challenge advertises the offer amount on every configured network (`acceptsForQuote`), the payment is verified against it (a base-price payment is `payment_requirements_mismatch` before the facilitator), a `credits_first` call is debited the offer's credits equivalent (price ÷ credit value, rounded up), and the provider's revenue share accrues on its own price. Offers are metadata: repricing never reverts an active provider to pending; omitting `offers` on an update keeps them, `[]` clears them. An operator-pinned execution target for a call disables offer pricing for it (the registry would not route it).
4
+ - **Catalog** — `GET /v1/catalog` gains `provider_offers`: every active provider's offers with `purchase.x402_per_call` (re-priced amounts) and `credits_per_call`. Quotes carry `price_source` (`provider_offer` | `catalog`), `provider_offer` and `catalog_amount_minor`.
5
+ - **Contract** — `/v1/provider-network/contract` documents `offers` and the pricing rule; the public provider view includes `offers`; `register-provider.sh` takes `OFFERS_JSON` and `PAYOUT_ADDRESS`.
6
+ - Client package (thin): unchanged.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xytara",
3
- "version": "3.4.0",
3
+ "version": "3.6.0",
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": {
@@ -95,7 +95,7 @@
95
95
  "verify:production-readiness": "node scripts/verify_production_readiness.js",
96
96
  "verify:final-activation": "node scripts/verify_final_activation.js",
97
97
  "verify:x402-facilitator": "node scripts/verify_x402_facilitator.js",
98
- "verify:all": "node scripts/verify_all.js && node scripts/verify_integrations.js && node scripts/verify_adapters.js && node scripts/verify_control_plane_contracts.js && node scripts/verify_control_plane_routes.js && node scripts/verify_framework_provider_promotion.js && node scripts/verify_operator_observability_boundary.js && node scripts/verify_pricing_experiment_plan.js && node scripts/verify_treasury_public_boundary.js && node scripts/verify_market_lanes.js && node scripts/verify_market_lane_depth.js && node scripts/verify_market_lane_traces.js && node scripts/verify_market_lane_promotion.js && node scripts/verify_provider_runtime_breadth.js && node scripts/verify_provider_runtime_journeys.js && node scripts/verify_lifecycle_continuity.js && node scripts/verify_first_run_conversions.js && node scripts/verify_delivery_summary.js && node scripts/verify_runtime_durability.js && node scripts/verify_revenue_launch_paths.js && node scripts/verify_full_catalog.js && node scripts/verify_tooling.js && node scripts/verify_examples.js && node scripts/verify_service.js && node scripts/verify_x402_facilitator.js && node scripts/verify_cdp_facilitator.js && node scripts/verify_a2a_rpc.js && node scripts/verify_checkout_processor.js && node scripts/verify_l402_adapter.js && node scripts/verify_bolt_adapter.js && node scripts/verify_mpp_adapter.js && node scripts/verify_rate_limiter.js && node scripts/verify_execution_surfacing.js && node scripts/verify_agent_identity.js && node scripts/verify_verify_execute_settle.js && node scripts/verify_execution_dedupe.js && node scripts/verify_refund_credit.js && node scripts/verify_commerce_bridge.js && node scripts/verify_settlement.js && node scripts/verify_provider_network.js && node scripts/verify_external_execution_retry.js && node scripts/verify_runtime_state_guard.js && node scripts/state_backup_offsite.js selftest && node scripts/verify_lifecycle_spend_binding.js && node scripts/verify_buyer_safety.js && node scripts/verify_buyer_event_log.js && node scripts/verify_x402_settlement_recovery.js && node scripts/verify_team_spend.js",
98
+ "verify:all": "node scripts/verify_all.js && node scripts/verify_integrations.js && node scripts/verify_adapters.js && node scripts/verify_control_plane_contracts.js && node scripts/verify_control_plane_routes.js && node scripts/verify_framework_provider_promotion.js && node scripts/verify_operator_observability_boundary.js && node scripts/verify_pricing_experiment_plan.js && node scripts/verify_treasury_public_boundary.js && node scripts/verify_market_lanes.js && node scripts/verify_market_lane_depth.js && node scripts/verify_market_lane_traces.js && node scripts/verify_market_lane_promotion.js && node scripts/verify_provider_runtime_breadth.js && node scripts/verify_provider_runtime_journeys.js && node scripts/verify_lifecycle_continuity.js && node scripts/verify_first_run_conversions.js && node scripts/verify_delivery_summary.js && node scripts/verify_runtime_durability.js && node scripts/verify_revenue_launch_paths.js && node scripts/verify_full_catalog.js && node scripts/verify_tooling.js && node scripts/verify_examples.js && node scripts/verify_service.js && node scripts/verify_x402_facilitator.js && node scripts/verify_cdp_facilitator.js && node scripts/verify_a2a_rpc.js && node scripts/verify_checkout_processor.js && node scripts/verify_l402_adapter.js && node scripts/verify_bolt_adapter.js && node scripts/verify_mpp_adapter.js && node scripts/verify_rate_limiter.js && node scripts/verify_execution_surfacing.js && node scripts/verify_agent_identity.js && node scripts/verify_verify_execute_settle.js && node scripts/verify_execution_dedupe.js && node scripts/verify_refund_credit.js && node scripts/verify_commerce_bridge.js && node scripts/verify_settlement.js && node scripts/verify_provider_network.js && node scripts/verify_external_execution_retry.js && node scripts/verify_runtime_state_guard.js && node scripts/state_backup_offsite.js selftest && node scripts/verify_lifecycle_spend_binding.js && node scripts/verify_buyer_safety.js && node scripts/verify_buyer_event_log.js && node scripts/verify_x402_settlement_recovery.js && node scripts/verify_team_spend.js && node scripts/verify_delegation_log.js",
99
99
  "prepublishOnly": "npm run verify:release-candidate",
100
100
  "verify:cdp-facilitator": "node scripts/verify_cdp_facilitator.js",
101
101
  "verify:a2a-rpc": "node scripts/verify_a2a_rpc.js",
@@ -120,6 +120,7 @@
120
120
  "verify:buyer-event-log": "node scripts/verify_buyer_event_log.js",
121
121
  "verify:x402-settlement-recovery": "node scripts/verify_x402_settlement_recovery.js",
122
122
  "verify:team-spend": "node scripts/verify_team_spend.js",
123
+ "verify:delegation-log": "node scripts/verify_delegation_log.js",
123
124
  "verify:client": "node scripts/verify_client.js"
124
125
  }
125
126
  }