Skip to content

0.42.0 — blockrun_video pays on Solana - #118

Merged
VickyXAI merged 5 commits into
mainfrom
release/0.42.0
Aug 29, 2026
Merged

0.42.0 — blockrun_video pays on Solana#118
VickyXAI merged 5 commits into
mainfrom
release/0.42.0

Conversation

@VickyXAI

Copy link
Copy Markdown
Contributor

Summary

  • lands the review fixes for feat(video): support Solana payments #117 (the Solana video route) and ships 0.42.0
  • solana-402.ts: key resolved through the keychain-aware resolveSolanaKey() (fixes blockrun_image on Solana under BLOCKRUN_KEYCHAIN=strict too); true total budget with per-request clamping; 30s submit / 60s poll / 20s re-sign; poll 402 classified from PAYMENT-RESPONSE; settlement receipt honoured before body validation; re-challenge pins amount, recipient and fee payer
  • video.ts: SOLANA_VIDEO_TOTAL_BUDGET_MS; the Solana-only image_url + aspect_ratio refusal is removed (both gateways quote it); budget-cap abort no longer gets funding advice appended
  • docs: blockrun_wallet text, gentech skill note, CHANGELOG

Verification

  • npm test 392/392 (23 new cases on the async Solana money path), npm run typecheck, npm run build
  • npm run verify:prices exit 0 — 0 under-reserving, 0 Solana under-reserved
  • stdio smoke: tools/list returns 20 tools incl. blockrun_video
  • live $0 probes: unpaid POST to sol.blockrun.ai quotes seedance-2.5 with image_url + aspect_ratio (402, not 400)

…solver

Both Solana helpers loaded the key with the SDK's file-only loadSolanaWallet.
Under BLOCKRUN_KEYCHAIN=strict the .solana-session file is retired once the
key is in the OS keychain while getChain() still reports solana, so a funded
wallet was reported as missing on blockrun_image and the new video route.

Also rework solanaPaidAsyncPost's money path: the budget clock starts at
entry and every request is clamped to what is left; submit/poll timeouts are
30s/60s with a 20s re-sign cadence and a back-off after a failed refresh; a
poll 402 is classified from PAYMENT-RESPONSE (permanent -> funding error,
otherwise the bounded re-sign path, whose exhaustion names the claimable job);
a settlement receipt is honoured whatever the body; a 2xx non-quote is a
fault rather than a free render; a 200 submit with poll_url is polled; the
re-challenge pins the fee payer too and compares the amount as a string.
…ect_ratio

The Solana branch passed a 300s request timeout and a poll budget that only
started after submit, so the tool's '15 min hard cap' was closer to 20. It
now passes SOLANA_VIDEO_TOTAL_BUDGET_MS and lets the helper own the timing.

Drop the Solana-only image_url + aspect_ratio refusal: live unpaid probes of
both gateways return a normal 402 quote for that combination on seedance-2.5
and nothing in the Solana gateway rejects it, so the guard only removed a
Base capability from Solana. The budget-cap abort is phrased as uncharged so
formatError stops appending funding advice to it.
Proactive and reactive re-signs, pinned re-challenges (amount, recipient,
fee payer), bounded exhaustion wording, permanent settle reasons, receipt-
without-body, failed/504/deadline, submit shapes, quote faults, resource-URL
pinning, keychain resolver, and per-request budget clamping. Resets shared
state per test and fails the owning test on unconsumed scripted responses.
@VickyXAI
VickyXAI merged commit 152deae into main Aug 29, 2026
1 check passed
@VickyXAI
VickyXAI deleted the release/0.42.0 branch August 29, 2026 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant