Version Packages - #554
Conversation
pr-reviewer Summary for #c0125b1✅ No issues found The code review completed successfully with no findings. Review effort: 1/5 (Trivial) SummaryThis is an automated Changesets release PR bumping The semver bump is correct: among the 20 consumed changesets, multiple are tagged No issues found — safe to merge when ready to publish. Token usage: 4,010 input, 2,390 output, 259,841 cache read, 34,056 cache write | Usage Guide New pushes are reviewed automatically with a 10-minute cooldown between reviews. To request a review at any time, comment |
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
9a3aa1e
8943f7f to
9a3aa1e
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
d8a08be
9a3aa1e to
d8a08be
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
bf17ba3
d8a08be to
bf17ba3
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
871968b
bf17ba3 to
871968b
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
6804783
871968b to
6804783
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
46047e2
6804783 to
46047e2
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
8d50653
8d50653 to
f6b02a5
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
6091a9b
f6b02a5 to
6091a9b
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
401b5e0
6091a9b to
401b5e0
Compare
04dd23f
401b5e0 to
04dd23f
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
d8de6b8
04dd23f to
d8de6b8
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
5f24b64
d8de6b8 to
5f24b64
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
253089f
5f24b64 to
253089f
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
7744e05
253089f to
7744e05
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
663c68f
7744e05 to
663c68f
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
a7bf3af
663c68f to
a7bf3af
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
57f153b
a7bf3af to
57f153b
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
c0125b1
57f153b to
c0125b1
Compare
There was a problem hiding this comment.
Auto-approved
This PR was automatically approved because:
- Claude recommends approval
- Claude assessed this as a minimal effort change
- The effort level is within the auto-approval threshold of 2
- No high or critical issues were detected
If you have any concerns, please request a manual review.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
nansen-cli@1.44.0
Minor Changes
#563
3b3e11bThanks @hulk-linus! - Emit privacy-preserving per-leg Hyperliquid attribution through the canonical trade-perps outcome events.#580
c5085c5Thanks @gulshngill! - Addnansen completion <bash|zsh|fish>, which prints a shell completion script generated from the CLI's own command schema. Completions cover nested subcommands, per-command flags, global flags, and the enum values a flag accepts.#597
8453355Thanks @kome12! - Security:nansen mcp verifyno longer sends a saved API key (fromnansen login/NANSEN_API_KEY/ config) to a custom--urlwithout explicit consent. Forwarding a saved key to a non-default URL now requires--send-api-key, and no key is ever sent over plain HTTP to a non-loopback host. An inline--api-keyis unaffected.Note: verifying a custom
--urlwith a saved key now errors unless--send-api-keyis passed (previously it warned and proceeded).#557
5a73b43Thanks @gulshngill! - Add thenansen research address-premium-labelscommand.#555
4285d7fThanks @gulshngill! - Add thenansen research chain-rankcommand.#561
dd8035cThanks @gulshngill! - Add thenansen research historical-token-ohlcvcommand.#560
52f2f09Thanks @gulshngill! - Add thenansen research perp-pnl-summarycommand.#559
ed2d7a5Thanks @gulshngill! - Add thenansen research position-intelligencecommand.#558
e273152Thanks @gulshngill! - Add thenansen research smart-money-pnl-leaderboardcommand.#556
3c14359Thanks @gulshngill! - Add thenansen research token-sectorscommand.#562
0d0f5e6Thanks @gulshngill! - Add thenansen research transaction-with-token-transfer-lookupcommand.#581
8726a23Thanks @gulshngill! - Every command option innansen schemanow carries a type and a description (140 research andwallet sendoptions had neither), and theresearch pointsgroup is described.research token ohlcv --timeframedocuments its real default (1d), andwallet send --chain,research search --type, and the prediction-market--neg-riskfilters declare the values they accept, so--helpand shell completion offer them. Fixed--neg-risk trueon the prediction-market screeners, which was sent to the API asneg_risk: falsebecause the parsed boolean was compared against the string'true'.nansen mcp installandnansen mcp uninstalldeclare their positional client in the schema, andnansen completionscripts now complete it (claude-code,claude-desktop,cursor) in bash, zsh, and fish.Patch Changes
#575
927ffeaThanks @kome12! - Fail closed on an ambiguous broadcast failure in swap and bridge execute. When/execute(swap) returns any 5xx (regardless of body shape — a structured 504UPSTREAM_TIMEOUTis treated the same as a bare 502) or any otheruninterpretable response — or the POST, or reading its body, throws a network
error — after the signed tx was sent, or a bridge broadcast fails ambiguously,
the tx may already be live. The quote is now marked spent and the
run aborts — rather than trying the next candidate quote or leaving the quote
reusable — so a re-execute (or agent auto-retry) can't double-broadcast. Gasless
(Relay solver-paid) swaps additionally do not retry the
/executePOST: thesigned authorization is broadcast by Relay's own wrapping tx, so a re-POST can't
be node-deduped and could trigger a second solve — a single attempt fails closed
instead. A bridge send is kept reusable only when the node's error proves the tx never
entered the mempool (a pre-broadcast validation rejection such as insufficient
funds); in-flight txpool states like "already known" or "nonce too low" fail
closed.
#572
2ba5c15Thanks @teyrebaz33! - Fixnansen changelog --since <version>silently returning "No changelog entries found" for a version missing its patch number (e.g.--since 1.43instead of--since 1.43.0), even when matching entries exist. The comparison compared the missing component againstundefined, and>is alwaysfalseagainstundefinedin both directions, so a version that matched on major.minor always came out "less than" the since-value. A missing component is now treated as0, and a--sincevalue that isn't a valid version (e.g.--since abc) now prints a clear error instead of silently matching nothing.The version-comparison logic is now shared (
src/semver.js) betweennansen changelog --sinceand the update-notifier'sisNewercheck, which had the identical bug in its own separate parser.isNewercouldn't misfire in practice (both versions it compares are always fully-qualified x.y.z today), but it's the same defect class, so it's fixed the same way rather than left in place.#569
04932c7Thanks @memosr! - Refuse to re-execute a swap quote that has already been broadcast, mirroring the single-use guardnansen bridge executealready had.nansen trade executenow marks the quote as spent (executedAt) the instant a transaction is broadcast — before waiting for its receipt — so aRECEIPT_TIMEOUT(the tx is on-chain but the command exits non-zero) no longer leaves the quote replayable. Retrying the same--quote <id>after such a failure previously re-signed and re-broadcast the swap under a fresh nonce instead of being refused.#592
60bd2efThanks @ygd58! - Fix the x402 auto-payment fallback insrc/api.jsgenerating multiple payment authorizations for the same request after an ambiguous outcome (issue x402 fallback may generate multiple payment authorizations after an ambiguous response #583). After a signedPayment-Signaturewas transmitted,_x402Retrypreviously collapsed every non-ok response — a clean rejection, a 5xx, an unreadable body — and every transport failure into a singlenull, and callers treated anynullas "safe to try the next payment option/provider". That meant a 5xx, a timeout, or an unparseable response (any of which could mean the server already received and settled the payment) triggered signing and transmitting a second independent payment for the same logical request. Separately, a genuine successful response whose JSON body happened to benullwas indistinguishable from a rejection, risking a second payment for an already-settled call._x402Retrynow returns a dedicatedX402_PAYMENT_REJECTEDsentinel only for a provably clean rejection (a non-5xx status with a readable body), and throwsNansenErrorwith the newPAYMENT_AMBIGUOUScode for anything else — a transport failure, a 5xx, or an unreadable body on either a rejection or a success. All three fallback call sites (Privy, local wallet, WalletConnect) now check against the sentinel instead ofnull, and re-throw aPAYMENT_AMBIGUOUSerror immediately instead of silently moving on to the next provider.#524
3e8dcc2Thanks @dolmaciabdullah-byte! - Use BigInt for EVM balance incheckX402Balanceto avoid precision loss on 18-decimal tokens (BSC stablecoins):parseInt(hex, 16)loses integer precision once the raw wei value exceedsNumber.MAX_SAFE_INTEGER(~9.0e15 wei, i.e. ~0.009 tokens at 18 decimals), skewing the low-balance warning.#568
9a45fc4Thanks @Kewe63! - Reject non-finite limit-order trigger prices and expiry values before wallet or API activity.#567
c0fe57bThanks @Kewe63! - Keepresearch perpanalytics-only instead of routing trading subcommands through the top-level perp dispatcher.#558
002921eThanks @gulshngill! - Reject non-integer or non-positive--limitvalues with an actionable error instead of forwarding them to the API.