Releases: pmxt-dev/pmxt
Releases · pmxt-dev/pmxt
v2.23.0
Added
- Metaculus Exchange Integration: Full support for the Metaculus reputation-based forecasting platform. Browse questions, community predictions, and tournament structures via
fetchMarketsandfetchEvents. Submit probability forecasts viacreateOrder(binary and multiple-choice questions) and withdraw them viacancelOrder. Group-of-questions posts are automatically expanded into individual sub-question markets. Token-based authentication via{ apiToken: "..." }. - Python SDK: Token Auth:
Exchangebase class andMetaculussubclass now acceptapi_tokenfor token-based authentication, with credential forwarding to the sidecar server. - Python SDK: Unit Tests: Comprehensive unit test suite for the Python client wrapper (
test_client.py,conftest.py) covering market fetching, order creation, filtering, error handling, and credential forwarding.
Fixed
- Probable Auth: viem Type Mismatch: Resolved
WalletClienttype disagreement when@prob/clobresolves a different viem copy than the host package.
Changed
- TypeScript SDK: Bumped
ts-jestto^29.4.9.
Installation
npm:
npm install pmxtjs@2.23.0PyPI:
pip install pmxt==2.23.0Links
What's Changed
- feat(python): add unit tests for client wrapper by @Bortlesboat in #68
- feat(Metaculus): wire Metaculus exchange into package, server, docs, and compliance by @0xharryriddle in #71
New Contributors
- @Bortlesboat made their first contribution in #68
Full Changelog: v2.22.2f...v2.23.0f
v2.22.2
Fixed
- MarketOutcome Shorthand Consistency:
fetchOrderBook,fetchOHLCV,fetchTrades,watchOrderBook, andwatchTradesnow accept aMarketOutcomeobject directly (e.g.market.yes) in both Python and TypeScript SDKs, matching the existing behavior ofcreateOrderandbuildOrder.
Installation
npm:
npm install pmxtjs@2.22.2PyPI:
pip install pmxt==2.22.2Links
Full Changelog: v2.22.1f...v2.22.2f
v2.22.1
Fixed
- Consistent OrderBook Error Handling: Kalshi, Limitless, and Baozi now throw
NotFounderrors for non-existing orderbooks instead of silently returning empty data. All exchanges now behave consistently with Polymarket.
Installation
npm:
npm install pmxtjs@2.22.1PyPI:
pip install pmxt==2.22.1Links
What's Changed
Full Changelog: v2.22.0f...v2.22.1f
v2.22.0
Added
- Opinion Exchange Integration: Full support for Opinion prediction market -- markets, events, OHLCV, order book, positions, orders, execution price, and WebSocket streaming. Includes
fetchMyTrades,fetchClosedOrders,fetchAllOrders, andcancelOrder. Does not yet supportfetchTradesorfetchBalance.
Installation
npm:
npm install pmxtjs@2.22.0PyPI:
pip install pmxt==2.22.0Links
Full Changelog: v2.21.2f...v2.22.0f
v2.21.2
Added
- Zenodo DOI Integration: Zenodo now automatically creates a DOI for each release, enabling reliable academic citation.
Installation
npm:
npm install pmxtjs@2.21.2PyPI:
pip install pmxt==2.21.2Links
What's Changed
- fix: keep Polymarket per-market image in UnifiedMarket mapping by @saschabuehrle in #63
New Contributors
- @saschabuehrle made their first contribution in #63
Full Changelog: v2.21.1f...v2.21.2f
v2.21.1
Added
- Zenodo DOI Integration: Zenodo now automatically creates a DOI for each release, enabling reliable academic citation.
Installation
npm:
npm install pmxtjs@2.21.1PyPI:
pip install pmxt==2.21.1Links
Full Changelog: v2.21.0f...v2.21.1f
v2.21.0
Added
- Typed Error Classes (Python SDK): 14 error classes (
BadRequest,AuthenticationError,RateLimitExceeded,NotFoundError, etc.) mirroringcore/src/errors.ts. Server error responses are automatically parsed into typed exceptions viafrom_server_error(). All catch blocks in the client now raise specificPmxtErrorsubclasses instead of genericException. - Typed Error Classes (TypeScript SDK): Matching error hierarchy with
fromServerError()factory.handleResponse()and all HTTP error paths now throw typedPmxtErrorsubclasses. All error classes exported from the package.
Fixed
- Credential Logging (Security): Removed plaintext logging of API credentials in Polymarket auth flow.
- Hardcoded Price Fallbacks: Replaced
0.5fallback prices with0in Kalshi, Baozi, and Myriad normalizers. Missing price data now correctly indicates "no price" instead of silently fabricating a 50-cent midpoint.
Installation
npm:
npm install pmxtjs@2.21.0PyPI:
pip install pmxt==2.21.0Links
Full Changelog: v2.20.3f...v2.21.0f
v2.20.3
Fixed
- Kalshi API v2 Compatibility: Handle renamed trade fields (
yes_price→yes_price_dollars,count→count_fp). Normalizer now parses both old (cents int) and new (dollar string) formats, fixingNaNprices andundefinedamounts infetchTrades/fetchMyTrades.
Changed
- Compliance Test Hardening:
fetchOHLCVtries multiple resolutions (1d,6h,1h) coarsest-first across top markets by volume instead of giving up early.watchTradesfilters for markets traded within the last 5 minutes and applies a 10-minute recency gate before attempting WebSocket watches. - Broader Skip Conditions:
isSkippableErrornow handlesAuthenticationError,PermissionDenied, missing credentials, and ESM import failures. Individual tests (createOrder,fetchPositions) cover additional expected rejection messages. - KalshiDemoExchange Excluded: Removed from compliance test matrix (redundant, no separate demo credentials).
- SDK Integration Tests: Added server-availability guard so tests skip gracefully when the PMXT server is not running.
Installation
npm:
npm install pmxtjs@2.20.3PyPI:
pip install pmxt==2.20.3Links
Full Changelog: v2.20.2f...v2.20.3f
v2.20.2
Fixed
- Probable Events API: Handle raw array response instead of expected
{ events: [] }wrapper. - Test Import: Remove vitest import from client-args test (project uses Jest).
Changed
- 3-Layer Architecture: Introduced fetcher/normalizer/SDK layer separation across all exchanges (Myriad, Polymarket, Kalshi, Limitless, Baozi, Probable).
- Stale File Cleanup: Removed superseded
fetchX.tsfiles from all exchanges, rewired websocket modules to use the new fetcher layer.
Installation
npm:
npm install pmxtjs@2.20.2PyPI:
pip install pmxt==2.20.2Links
Full Changelog: v2.20.1f...v2.20.2f
v2.20.1
Fixed
- Error Mapper: SDK Error Extraction (#56): Third-party SDK errors (e.g.
@polymarket/clob-client) that attach HTTP metadata (.status,.statusCode,.response) toErrorinstances are now properly mapped to specific error classes (InsufficientFunds,AuthenticationError,InvalidOrder, etc.) instead of falling through to a genericBadRequest. The error mapper also extracts the real API error message from.response.datainstead of using the SDK's generic.message.
Changed
- Error Mapper: Deduplicated Status Code Mapping: Extracted shared
mapByStatusCode()method to eliminate duplicated switch logic across axios, plain-object, and SDK error handling paths.
Installation
npm:
npm install pmxtjs@2.20.1PyPI:
pip install pmxt==2.20.1Links
Full Changelog: v2.20.0f...v2.20.1f