Releases: pmxt-dev/pmxt
Releases · pmxt-dev/pmxt
v2.17.9
Fixed
- TypeScript SDK: Server startup race condition causes 401 Unauthorized: After a version mismatch was detected, the
ServerManagerwould kill the old server and delete the lock file, then callwaitForServer(). Because the lock file was gone,getRunningPort()fell back to the default port 3847. If any other process (e.g. an unrelated local server) was already responding on that port,waitForServer()would return immediately with no lock file present, causinggetAccessToken()to returnundefinedand all subsequent API requests to be sent without an auth token. Fixed by rewritingwaitForServer()to read the lock file directly on each poll iteration and only return when a lock file is present and the server at that file's port passes a health check. This prevents falsely matching an unrelated server on the default port.
Installation
npm:
npm install pmxtjs@2.17.9PyPI:
pip install pmxt==2.17.9Links
Full Changelog: v2.17.8f...v2.17.9f
v2.17.8
Fixed
- Python SDK
fetch_ohlcvdeserialization error: Callingfetch_ohlcv()raisedValueError: Multiple matches found when deserializing... with oneOf schemas: HistoryFilterParams, OHLCVParamsbecause the OpenAPI spec emittedoneOf: [OHLCVParams, HistoryFilterParams]for theparamsargument. Since both schemas are structurally identical in JSON (same four fields, differing only inresolutionbeing optional vs. required), pydantic matched both branches and raised an exception. Fixed by removing the deprecatedHistoryFilterParamsunion fromfetchOHLCVinBaseExchange.tsand all exchange implementations, then regenerating the OpenAPI spec. The spec now emits onlyOHLCVParamsfor this parameter.fetchTradesis unaffected as itsHistoryFilterParams | TradesParamsunion has no structural ambiguity.
Installation
npm:
npm install pmxtjs@2.17.8PyPI:
pip install pmxt==2.17.8Links
Full Changelog: v2.17.7f...v2.17.8f
v2.17.7
Fixed
- Python SDK Missing Exchange Classes:
pmxt.Probable,pmxt.Baozi, andpmxt.MyriadraisedAttributeErroron import because the Python SDK's exchange subclasses were maintained manually and had drifted from the TypeScript core. All three classes are now available.
Infrastructure
- Auto-generated Python SDK exchange classes:
sdks/python/pmxt/_exchanges.pyis now generated fromcore/src/server/app.ts(the single source of truth for registered exchanges) viacore/scripts/generate-python-exchanges.js. The generator also keeps__init__.pyimports and__all__in sync. A CI guard (python-exchanges-check.yml) fails any PR where the generated file diverges from the committed one. - Auto-generated
COMPLIANCE.md: The feature support matrix is now generated from exchange implementations viacore/scripts/generate-compliance.js, replacing the previously manual document. A CI guard (compliance-check.yml) keeps it in sync withcore/src/exchanges/*/index.ts. - TypeScript SDK client methods CI guard: Added
typescript-client-check.ymlto fail PRs whereBaseExchange.tschanges without regenerating the corresponding methods in the TypeScript SDKclient.ts. - All three generators are wired into
generate:sdk:alland run automatically on every publish.
Installation
npm:
npm install pmxtjs@2.17.7PyPI:
pip install pmxt==2.17.7Links
Full Changelog: v2.17.6f...v2.17.7f
v2.17.6
Fixed
- Duplicate
eventIdinUnifiedMarketcauses build failure: The v2.17.5 fix addedeventId?: stringtocore/src/types.tsbut the field already existed at line 34, resulting inTS2300: Duplicate identifier 'eventId'and a broken build. The duplicate declaration is removed.
Installation
npm:
npm install pmxtjs@2.17.6PyPI:
pip install pmxt==2.17.6Links
Full Changelog: v2.17.4f...v2.17.6f
v2.17.4
Fixed
- Polymarket Cloudflare WAF Bypass: The User-Agent header added in v2.17.2 was insufficient to bypass Polymarket's Cloudflare bot detection. Enhanced the Polymarket client with browser-mimicking headers (
Accept,Accept-Language,Origin: https://polymarket.com,Referer, andsec-fetch-*directives). These headers make requests appear as same-site CORS calls from the Polymarket frontend, allowing the API to pass Cloudflare's bot scoring model.fetchEvents()now works reliably on all platforms.
Installation
npm:
npm install pmxtjs@2.17.4PyPI:
pip install pmxt==2.17.4Links
Full Changelog: v2.17.3f...v2.17.4f
v2.17.3
Fixed
- Fatal Circular JSON Crash (
fetchEvents): Fixed aTypeError: Converting circular structure to JSONthat fatally crashed the sidecar server on everyfetchEventscall across all exchanges. The v2.17.2 patch injectedmarket.event = eventinside the core exchange functions, creating anevent → markets[0] → eventreference cycle. Since Express serializes sidecar responses viaJSON.stringify, this caused an unrecoverable crash propagated to all SDK clients. Themarket.eventback-references are now hydrated exclusively client-side insideconvertEventin the TypeScript SDK, keeping all sidecar REST payloads strictly acyclic.
Installation
npm:
npm install pmxtjs@2.17.3PyPI:
pip install pmxt==2.17.3Links
Full Changelog: v2.17.2f...v2.17.3f
v2.17.2
Fixed
- Bi-directional Navigation (
market.event): Fixed a hydration issue wheremarket.eventwasundefined. Reconstructed theUnifiedMarketlist by assigningmarket.event = eventduring theconvertEventhydration step, and correctly injected the reverse-reference in all the core exchanges. - Global User-Agent Header: Added a default generic
User-Agentheader (pmxt (https://github.com/pmxt-dev/pmxt)) to theBaseExchangeaxios configuration. This ensures consistent identification across all exchanges and resolves the Polymarket Discovery 401 Error that occurred when callingfetchEvents()without parameters effectively bypassing WAF/CDN restrictions.
Installation
npm:
npm install pmxtjs@2.17.2PyPI:
pip install pmxt==2.17.2Links
Full Changelog: v2.17.1f...v2.17.2f
v2.17.1
Fixed
- Sidecar Bundle Drift: The features shipped in 2.17.0 (parameterless
fetchEvents(), Kalshi client-side sorting) were correctly implemented in TypeScript source but never reached users because the publish pipeline was missing thebundle:serverstep for the npm job. The distributedpmxt-corepackage contained a stale pre-compiled sidecar (bundled.js) from a previous release that still enforced the old guardfetchEvents() requires a query, eventId, or slug parameter. This patch rebuilds and ships the correct bundle. - CI/CD: Publish Workflow: Added
npm run bundle:serverto thepublish-npmjob inpublish.yml, immediately after theBuild Corestep. Without this, source-level changes to the sidecar server are silently ignored in all npm-distributed packages. - CI/CD: Test Workflow: Applied the same fix to
test-publish.ymlso dry-run publishes and test runs also exercise the correct sidecar, preventing this class of drift from going undetected in future PRs.
Installation
npm:
npm install pmxtjs@2.17.1PyPI:
pip install pmxt==2.17.1Links
Full Changelog: v2.17.0f...v2.17.1f
v2.17.0
Improved
- Unified Discovery: Unrestricted Event Fetching: Removed the mandatory requirement for a query, event identification, or slug in
fetchEvents. Users can now callfetchEvents()without parameters to retrieve the "front page" of an exchange (typically top events by volume). - Polymarket: High-Performance Discovery: Redirects no-query
fetchEventscalls to the specific Gamma/eventslist endpoint, providing a cleaner and faster experience than the fuzzy search path. - Kalshi: Client-Side Event Ranking: Implemented robust client-side sorting for Kalshi events. Since the Kalshi API lacks server-side sorting for the event list,
fetchEventsnow aggregates volume, liquidity, and recency from nested markets to provide consistentsortsupport (volume,liquidity,newest). - Limitless: Semantic Event Mapping: Mapped Limitless "Group Markets" to the unified
fetchEventsinterface. Discovery calls now automatically filter for group markets, aligning Limitless with event-centric discovery patterns. - Developer Experience: Synchronized
fetchEventsbehavior withfetchMarketsacross all exchanges (Baozi, Myriad, Probable, Kalshi, Polymarket, Limitless).
Fixed
- Unit Tests: Updated core validation suite to reflect the relaxed requirements for event fetching.
Installation
npm:
npm install pmxtjs@2.17.0PyPI:
pip install pmxt==2.17.0Links
Full Changelog: v2.16.1f...v2.17.0f
v2.16.1
Fixed
- Documentation: Automated Generator: Fixed a bug in
generate-openapi.jswhere certain model fields (likeeventIdandsort) were not being correctly reflected in the generated SDK documentation. - SDK: Regenerated Reference Docs: Synchronized
API_REFERENCE.mdfor both Python and TypeScript to include the newly added traversal and sorting capabilities.
Installation
npm:
npm install pmxtjs@2.16.1PyPI:
pip install pmxt==2.16.1Links
Full Changelog: v2.16.0f...v2.16.1f