Skip to content

Releases: pmxt-dev/pmxt

v2.23.0

04 Apr 07:53

Choose a tag to compare

Added

  • Metaculus Exchange Integration: Full support for the Metaculus reputation-based forecasting platform. Browse questions, community predictions, and tournament structures via fetchMarkets and fetchEvents. Submit probability forecasts via createOrder (binary and multiple-choice questions) and withdraw them via cancelOrder. Group-of-questions posts are automatically expanded into individual sub-question markets. Token-based authentication via { apiToken: "..." }.
  • Python SDK: Token Auth: Exchange base class and Metaculus subclass now accept api_token for 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 WalletClient type disagreement when @prob/clob resolves a different viem copy than the host package.

Changed

  • TypeScript SDK: Bumped ts-jest to ^29.4.9.

Installation

npm:

npm install pmxtjs@2.23.0

PyPI:

pip install pmxt==2.23.0

Links

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

Full Changelog: v2.22.2f...v2.23.0f

v2.22.2

02 Apr 13:43

Choose a tag to compare

Fixed

  • MarketOutcome Shorthand Consistency: fetchOrderBook, fetchOHLCV, fetchTrades, watchOrderBook, and watchTrades now accept a MarketOutcome object directly (e.g. market.yes) in both Python and TypeScript SDKs, matching the existing behavior of createOrder and buildOrder.

Installation

npm:

npm install pmxtjs@2.22.2

PyPI:

pip install pmxt==2.22.2

Links

Full Changelog: v2.22.1f...v2.22.2f

v2.22.1

23 Mar 07:52

Choose a tag to compare

Fixed

  • Consistent OrderBook Error Handling: Kalshi, Limitless, and Baozi now throw NotFound errors for non-existing orderbooks instead of silently returning empty data. All exchanges now behave consistently with Polymarket.

Installation

npm:

npm install pmxtjs@2.22.1

PyPI:

pip install pmxt==2.22.1

Links

What's Changed

  • refactor: handle error in fetch_order_book() in the same way by @psyberck in #67

Full Changelog: v2.22.0f...v2.22.1f

v2.22.0

22 Mar 18:42

Choose a tag to compare

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, and cancelOrder. Does not yet support fetchTrades or fetchBalance.

Installation

npm:

npm install pmxtjs@2.22.0

PyPI:

pip install pmxt==2.22.0

Links

Full Changelog: v2.21.2f...v2.22.0f

v2.21.2

20 Mar 15:57
407d3f2

Choose a tag to compare

Added

  • Zenodo DOI Integration: Zenodo now automatically creates a DOI for each release, enabling reliable academic citation.

Installation

npm:

npm install pmxtjs@2.21.2

PyPI:

pip install pmxt==2.21.2

Links

What's Changed

  • fix: keep Polymarket per-market image in UnifiedMarket mapping by @saschabuehrle in #63

New Contributors

Full Changelog: v2.21.1f...v2.21.2f

v2.21.1

19 Mar 12:55

Choose a tag to compare

Added

  • Zenodo DOI Integration: Zenodo now automatically creates a DOI for each release, enabling reliable academic citation.

Installation

npm:

npm install pmxtjs@2.21.1

PyPI:

pip install pmxt==2.21.1

Links

Full Changelog: v2.21.0f...v2.21.1f

v2.21.0

15 Mar 11:09

Choose a tag to compare

Added

  • Typed Error Classes (Python SDK): 14 error classes (BadRequest, AuthenticationError, RateLimitExceeded, NotFoundError, etc.) mirroring core/src/errors.ts. Server error responses are automatically parsed into typed exceptions via from_server_error(). All catch blocks in the client now raise specific PmxtError subclasses instead of generic Exception.
  • Typed Error Classes (TypeScript SDK): Matching error hierarchy with fromServerError() factory. handleResponse() and all HTTP error paths now throw typed PmxtError subclasses. 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.5 fallback prices with 0 in 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.0

PyPI:

pip install pmxt==2.21.0

Links

Full Changelog: v2.20.3f...v2.21.0f

v2.20.3

14 Mar 22:17

Choose a tag to compare

Fixed

  • Kalshi API v2 Compatibility: Handle renamed trade fields (yes_priceyes_price_dollars, countcount_fp). Normalizer now parses both old (cents int) and new (dollar string) formats, fixing NaN prices and undefined amounts in fetchTrades / fetchMyTrades.

Changed

  • Compliance Test Hardening: fetchOHLCV tries multiple resolutions (1d, 6h, 1h) coarsest-first across top markets by volume instead of giving up early. watchTrades filters for markets traded within the last 5 minutes and applies a 10-minute recency gate before attempting WebSocket watches.
  • Broader Skip Conditions: isSkippableError now handles AuthenticationError, 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.3

PyPI:

pip install pmxt==2.20.3

Links

Full Changelog: v2.20.2f...v2.20.3f

v2.20.2

14 Mar 21:29

Choose a tag to compare

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.ts files from all exchanges, rewired websocket modules to use the new fetcher layer.

Installation

npm:

npm install pmxtjs@2.20.2

PyPI:

pip install pmxt==2.20.2

Links

Full Changelog: v2.20.1f...v2.20.2f

v2.20.1

14 Mar 16:41

Choose a tag to compare

Fixed

  • Error Mapper: SDK Error Extraction (#56): Third-party SDK errors (e.g. @polymarket/clob-client) that attach HTTP metadata (.status, .statusCode, .response) to Error instances are now properly mapped to specific error classes (InsufficientFunds, AuthenticationError, InvalidOrder, etc.) instead of falling through to a generic BadRequest. The error mapper also extracts the real API error message from .response.data instead 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.1

PyPI:

pip install pmxt==2.20.1

Links

Full Changelog: v2.20.0f...v2.20.1f