Releases: pmxt-dev/pmxt
Releases · pmxt-dev/pmxt
v2.44.4
Fixed
- Docs publishing: Preserve
Cross Exchangedirectly afterEvents & Marketsduring release-time Mintlify regeneration instead of appending hosted groups near the bottom.
Installation
npm:
npm install pmxtjs@2.44.4PyPI:
pip install pmxt==2.44.4Links
Full Changelog: v2.44.3f...v2.44.4f
v2.44.3
Fixed
- Cross Exchange docs: Add Python, TypeScript, and curl examples for matched market and event cluster API reference pages.
- Relation filters: Document valid matched-cluster relation values (
identity,subset,superset,overlap,disjoint) and expose the single-relation enum in OpenAPI.
Installation
npm:
npm install pmxtjs@2.44.3PyPI:
pip install pmxt==2.44.3Links
Full Changelog: v2.44.2f...v2.44.3f
v2.44.2
Fixed
- Docs navigation: Move API Reference
Cross Exchangedirectly afterEvents & Marketsso matched-cluster endpoints sit next to catalog discovery. - Hosted docs sync: Insert synced Cross Exchange hosted routes after
Events & Marketsinstead of appending them near the bottom of the sidebar.
Installation
npm:
npm install pmxtjs@2.44.2PyPI:
pip install pmxt==2.44.2Links
Full Changelog: v2.44.1f...v2.44.2f
v2.44.1
Fixed
- Docs navigation: Move hosted cross-exchange matching endpoints from the Enterprise sidebar group into the API Reference
Cross Exchangegroup. - Hosted docs sync: Preserve the
Cross Exchange/Enterprisesplit when hosted endpoint metadata is synced from hosted-pmxt.
Installation
npm:
npm install pmxtjs@2.44.1PyPI:
pip install pmxt==2.44.1Links
Full Changelog: v2.44.0f...v2.44.1f
v2.44.0
Added
- Router SDKs: Add cluster-first cross-venue matching methods to both TypeScript and Python SDKs:
fetchMatchedMarketClusters/fetch_matched_market_clustersandfetchMatchedEventClusters/fetch_matched_event_clusters. - Matching docs: Document the new cluster-first market and event matching workflows with query-based and anchor-object examples.
Changed
- Hosted docs: Promote the cluster-first matching endpoints in the generated docs while hiding the legacy pairwise matching routes from public navigation.
- SDK responses: Preserve live
bestBid/bestAskfields on converted market outcomes so cluster responses include executable-price context.
Installation
npm:
npm install pmxtjs@2.44.0PyPI:
pip install pmxt==2.44.0Links
Full Changelog: v2.43.25f...v2.44.0f
v2.43.25
Added
- Polymarket: Expose
initAuth()/init_auth()in both TypeScript and Python SDKs — previously only available in core. Fixes #505.
Installation
npm:
npm install pmxtjs@2.43.25PyPI:
pip install pmxt==2.43.25Links
What's Changed
- fix: expose Polymarket auth initialization in SDKs by @iccccccccccccc in #601
Full Changelog: v2.43.24f...v2.43.25f
v2.43.24
Fixed
- Build: Revert
FetcherContext.callApireturn type fromPromise<unknown>back toPromise<any>— theunknownchange broke all 33 exchange fetchers that accesscallApireturn values without type narrowing. - Build: Revert
Ticker.info,Market.info,FundingRate.infofromRecord<string, unknown>back toanyin feeds types — broke Binance normalizer and Chainlink feed assignments. - Build: Fix Chainlink feed logger calls to pass structured context object instead of bare string.
- Build: Revert
ERROR_CODE_MAPconstructor type from(...args: string[])back to(...args: any[])—RateLimitExceededtakes(string, number?, string?)which doesn't matchstring[].
Installation
npm:
npm install pmxtjs@2.43.24PyPI:
pip install pmxt==2.43.24Links
What's Changed
- fix: polymarket auth timeout + non-null guards by @realfishsam in #618
- fix: kalshi auth privateKey guard by @realfishsam in #619
- fix: limitless auth apiKey guard by @realfishsam in #620
- fix: smarkets auth credential guards by @realfishsam in #621
- fix: polymarket fetcher query param guard by @realfishsam in #622
- fix: handle fire-and-forget async in binance feed by @realfishsam in #623
- fix: handle fire-and-forget async in chainlink feed by @realfishsam in #624
- fix: goldsky async race guard + type safety by @realfishsam in #625
- fix: catch JSON.parse in ws-client onmessage by @realfishsam in #626
- fix: add 30s timeout to SDK fetchWithRetry by @realfishsam in #627
- fix: add 5s timeout to server-manager health checks by @realfishsam in #628
- fix: feed-client fetch timeout + type safety by @realfishsam in #629
- fix: replace unsafe any types across 5 core files by @realfishsam in #630
- fix: replace unsafe any types in error-mapper by @realfishsam in #631
- fix: replace unsafe any types in kalshi normalizer by @realfishsam in #632
- fix: replace unsafe any types in router client by @realfishsam in #633
- fix: Python init export + return types by @realfishsam in #634
- fix: typed List/Dict in Python server_manager and errors by @realfishsam in #635
- fix: Python UserTrade fields + PaginatedResult.total optional by @realfishsam in #636
- fix: Python params + fetchOHLCV timeframe default by @realfishsam in #637
- fix: normalize Order.status cancelled to canceled by @realfishsam in #638
- fix: replace non-null assertions in mock exchange by @realfishsam in #639
Full Changelog: v2.43.20f...v2.43.24f
v2.43.20
Fixed
- Kalshi: Non-null assertion guards on WebSocket resolver maps + 30s connection timeout. Fixes #230, #231.
- Gemini Titan: Non-null assertion guards on resolver maps + 30s handshake timeout. Fixes #235, #236.
- Opinion: Non-null assertion guards on resolver maps + 30s connection timeout. Fixes #239, #249.
- Myriad: Non-null assertion guards on WebSocket resolver/rejecter maps. Fixes #240.
- Polymarket: Non-null assertion guards, bounded
pendingTrades(1000/asset),userCallbacksdedup + cap (100), 30s connection timeout on both channels. Fixes #243, #245, #247, #334, #380. - Polymarket US: Non-null assertion guards on WebSocket socket reference. Fixes #284.
- Polymarket: Guard
Map.get()on candle buckets in normalizer. Fixes #321. - Limitless: Non-null assertion guards on websocket resolvers/buffers + stale resolver cleanup on timeout + client orderClient/signer guards + normalizer param narrowing. Fixes #257, #290, #303, #372.
- Kalshi/Limitless/GoldSky: Remove unsafe
ascasts on nullable fields — use type predicates, null guards, optional chaining. Fixes #336. - TypeScript SDK: Non-null guards on
ws-client.tssend + 30s fetch timeout on routercompareMarketPrices. Fixes #223, #281. - Chainlink/Binance feeds: Add 30s connection timeout to WebSocket
establishConnection(). Fixes #252, #253. - Server: Replace console calls with structured logger in
server/index.ts. Fixes #306, #308, #310, #311, #312. - TypeScript SDK: Replace
console.warnwith structured logger in SDK router. Fixes #396. - Utils: Non-null guards on
market-utils.ts+ max queue depth (1000) on throttler + watcher resolver safety. Fixes #269, #296, #329.
Performance
- Kalshi: Replace O(n²)
concat()withpush()in fetcher pagination (3 loops, MAX_PAGES=1000). Fixes #343. - Opinion: Replace O(n²) spread with
push()in fetcher pagination (MAX_PAGES=500). Fixes #347. - Smarkets: Replace O(n²) spread with
push()in fetcher pagination + map building (MAX_PAGES=100). Fixes #355.
Installation
npm:
npm install pmxtjs@2.43.20PyPI:
pip install pmxt==2.43.20Links
What's Changed
- perf: replace O(n²) concat with push in kalshi fetcher by @realfishsam in #603
- fix: opinion fetcher perf + websocket safety by @realfishsam in #604
- fix: limitless non-null assertions + resolver leak cleanup by @realfishsam in #605
- fix: add 30s connection timeout to feed WebSockets by @realfishsam in #606
- fix: utils non-null guards + throttler max depth by @realfishsam in #607
- fix: guard Map.get() on candle buckets in polymarket normalizer by @realfishsam in #608
- fix: replace console.warn with structured logger in SDK router by @realfishsam in #609
- fix: gemini-titan websocket non-null guards + timeout by @realfishsam in #610
- fix: polymarket websocket safety + bounded buffers + timeouts by @realfishsam in #611
- fix: SDK non-null guards + router fetch timeout by @realfishsam in #612
- fix: replace console with logger in server/index.ts by @realfishsam in #613
- fix: myriad websocket non-null guards by @realfishsam in #614
- fix: kalshi websocket non-null guards + connection timeout by @realfishsam in #615
- perf: replace O(n²) spread with push in smarkets fetcher by @realfishsam in #616
- fix: remove unsafe as casts on nullable fields by @realfishsam in #617
Full Changelog: v2.43.19f...v2.43.20f
v2.43.19
Fixed
- Myriad: Read
eventIdinstead of deprecatedquestionIdin normalizer and utils. Fixes #556.
Installation
npm:
npm install pmxtjs@2.43.19PyPI:
pip install pmxt==2.43.19Links
What's Changed
- fix: read eventId instead of questionId in myriad normalizer by @realfishsam in #602
Full Changelog: v2.43.18f...v2.43.19f
v2.43.18
Fixed
- Python SDK: Python 3.8-compatible annotations in
errors.py(from __future__ import annotations). Fixes #561. - Python SDK: Replace bare
list[T]withList[T]inmodels.pyfor Python 3.8 compat. Fixes #562. - Python SDK: Add missing exports (
MarketFilterCriteria,EventFilterCriteria,SortOption,OrderSide, etc.) to__init__.pyand__all__. Add return type annotations tostop_server()/restart_server(). Fixes #565, #471. - Python SDK: Remove dangerous defaults (
side="buy",amount=0) fromcreate_order/build_order— now required keyword-only params. Fixes #466. - Python SDK: Rename
typeparameter toorder_typeto avoid shadowing Python built-in. Add_convert_params_to_camel()forMarketFetchParams/EventFetchParams. RenameOrderBook.dttodatetime. Add concrete return types to 9 router proxy methods. Fixes #563, #449, #452, #456, #496. - Python SDK: Add
SubscriptionOptiontype, typedBuiltOrder.params/BuiltOrder.tx,MatchResult/EventMatchResultinheritance from unified types. Fixes #467, #500, #501, #497, #498. - Server: Validate query params in
feed-routes.tswith runtimetypeofchecks instead of unsafeas stringcasts. Fixes #558. - Server: Validate
parsed.methodin WebSocket handler before use. Fixes #559. - Limitless: Replace 9 non-null assertions on optional interface methods with guard-and-throw checks. Fixes #560.
- Hyperliquid: Correct
allMidslookup key — use@{outcomeId}instead of#{encoding}, fixing prices hardcoded to 0.5. Fixes #441. - Hyperliquid: Add
quoteTokentoHyperliquidRawOutcomeinterface. Fixes #555. - Hyperliquid: Add
builderFeetoHyperliquidRawFill,userstoHyperliquidRawTrade, makeorigSzoptional. Fixes #547, #546, #520. - Kalshi: Read
liquidity_dollarsinstead of deprecatedliquidityfield. Fixes #554. - Kalshi: Remove deprecated
mututals_descriptionfrom event normalizer. Fixes #443. - Kalshi: Handle missing
image_urlin event normalizer. Fixes #442. - Kalshi: Sync spec — add
ts_msto Order, removeclient_order_idfrom Fill, addbalance_dollarsto GetBalance, addsubaccountquery param. Fixes #542, #517, #522, #433. - Polymarket: Use camelCase
endDateIsoinstead of snake_caseend_date_isoin normalizer. Fixes #557. - Polymarket US: Map
cashValuetounrealizedPnLandcurrentPriceinstead of hardcoding 0. Fixes #533. - Gemini Titan: Use dedicated
volume24hfield instead ofvolumefor 24h volume. Fixes #444. - Gemini Titan: Type
GeminiRawEvent.seriesasRecord<string, any> | nullto match live API. Fixes #439. - Metaculus: Handle 403
api_forecasting_not_enablederror. Fixes #515. - Baozi: Correct category field mapping — was returning tier instead of topic category. Fixes #540.
- Opinion: Update base URL from
openapi.opinion.tradetoproxy.opinion.trade:8443. Fixes #516. - Smarkets: Sync spec — add CFTC jurisdiction,
cftcobject,original_price,original_bets, relax fullcover required fields. Fixes #543, #544, #545, #527, #528. - GoldSky: Add 30s timeout to subscriber fetch. Fixes #512.
- Probable: Clean up
orderBookResolversafter resolution to prevent memory leak. Fixes #550. - TypeScript SDK: Add
questiongetter,bestBid/bestAskonMarketOutcome, typefetchMarketsPaginatedparams, syncgetExecutionPriceto match core. Fixes #453, #454, #462, #470, #502, #503.
Changed
- Router:
compareMarketPrices,fetchRelatedMarkets, andfetchHedgesnow accept optionalparams. Fixes #448.
Performance
- Metaculus: Replace O(n²)
array.concat()withpush()infetchMarketsandfetchEventspagination. Fixes #551, #552.
Infrastructure
- RPC endpoints: Add
LIMITLESS_RPC_URLandOPINION_RPC_URLenv var fallbacks for hardcoded blockchain RPC URLs. Fixes #507. - Service URLs: Add
PMXT_API_URL,POLYMARKET_GOLDSKY_URL,OPINION_API_URL,OPINION_WS_URLenv var fallbacks. Fixes #508.
Installation
npm:
npm install pmxtjs@2.43.18PyPI:
pip install pmxt==2.43.18Links
What's Changed
- fix: use Python 3.8-compatible annotations in errors.py by @realfishsam in #566
- fix: use Python 3.8-compatible generics in models.py by @realfishsam in #567
- fix: validate query params in feed-routes instead of unsafe casts by @realfishsam in #568
- fix: validate parsed.method in ws-handler before use by @realfishsam in #569
- fix: replace non-null assertions with guard checks in limitless by @realfishsam in #570
- perf: replace O(n²) concat with push in metaculus fetchMarkets by @realfishsam in #571
- perf: replace O(n²) concat with push in metaculus fetchEvents by @realfishsam in #572
- fix: clean up orderBookResolvers after resolution in probable websocket by @realfishsam in #573
- fix: add 30s timeout to GoldSky subscriber fetch by @realfishsam in #575
- fix: add missing exports and return types in Python init.py by @realfishsam in #576
- fix: add quoteToken to hyperliquid outcome interface by @realfishsam in #577
- fix: type GeminiRawEvent.series as object|null by @realfishsam in #578
- fix: remove deprecated mututals_description from kalshi normalizer by @realfishsam in #580
- fix: map cashValue to unrealizedPnL in polymarket_us by @realfishsam in #582
- fix: add env fallbacks for hardcoded RPC endpoints by @realfishsam in #583
- fix: use camelCase endDateIso in polymarket normalizer by @realfishsam in #584
- fix: handle 403 api_forecasting_not_enabled in metaculus by @realfishsam in #585
- fix: correct category field mapping in baozi normalizer by @realfishsam in #587
- fix: read liquidity_dollars instead of deprecated liquidity in kalshi by @realfishsam in #588
- fix: update opinion base URL to proxy.opinion.trade:8443 by @realfishsam in #591
- fix: sync Kalshi spec with upstream API changes by @realfishsam in #590
- fix: handle missing image_url in kalshi event normalizer by @realfishsam in #592
- fix: use dedicated volume24h field in gemini-titan normalizer by @realfishsam in #594
- fix: correct allMids lookup key in hyperliquid normalizer by @realfishsam in #595
- fix: type safety and SDK parity fixes in TypeScript client by @realfishsam in #596
- fix: sync smarkets spec with upstream API changes by @realfishsam in #597
- fix: sync hyperliquid spec with upstream API changes by @realfishsam in #599
- fix: type safety and naming fixes in Python client.py by @realfishsam in #600
- fix: add env fallbacks for hardcoded service URLs by @realfishsam in #589
- fix: remove dangerous defaults from Python create_order/build_order by @realfishsam in #598
Full Changelog: v2.43.17f...v2.43.18f