Repository navigation
MMSP 0.5.6 adds Kimi K3.1 Pro (#294), turns thinking off for ThinkingLevel.NONE on more Claude models (#293), types every error MMSP raises (#288, #290), and makes the history, concurrent calls and interruption behave the same in every client (#291, #292).
Highlights
- Kimi K3.1 Pro:
kimi-k3.1-proandkimi-k3.1-pro-highspeedon Moonshot,moonshotai/kimi-k3.1-proon OpenRouter andkimi-k3.1-proon TokenDance, throughmoonshot-officialin both packages. On the K3 series,kimi-k3included,ThinkingLevel.NONEsendsreasoning_effort: "none", which turns thinking off, andPromptCaching.ENHANCEsendsprompt_cache_optionswith a 1h TTL (#294). - Claude thinking level none:
anthropic-officialturns thinking off forThinkingLevel.NONEon Claude Sonnet 4.6, Opus 4.8, Sonnet 5 and Opus 5, and runs Fable 5 at its lowest effort (#293). - Typed errors:
RoutingError,InvalidMessageError,UnsupportedContentError,UnknownEventError,ProviderStreamErrorandConcurrentCallError, each a subclass of the built-in it replaces, so existingexcept ValueError/catchcode keeps working. Every bare raise in both packages uses them, and the MMSP server relays every MMSP error with its fields (#288, #290). - Interruption: an abort, a closed generator or a left loop closes the provider's request at once in every client of both packages, and an interrupted turn is neither recorded nor traced. An aborted TypeScript stream throws the signal's reason (#292).
- Usage: a token count of 0 stays 0, and a count the provider leaves out is null (#279).
- Gateways: the Chat Completions client records a gateway's encrypted reasoning under the shared fidelity keys and still reads the blocks 0.5.5 recorded (#287); TokenDance's DeepSeek V4.1 Flash moves to
openai-chat(#286). - Docs, site and playground: the configuration page states what each client sends, ignores or raises on for each
UniConfigkey (#289). The site's top bar becomes Overview, Docs, RFC, Model Index, Model Status and Changelog; the Model Index shows latency and throughput, the Model Status page pages through a year of history, and the RFC pages move to/rfcs/with search (#282, #283, #284, #285). The playground's reply head names the model and the time (#281).
Breaking
get_history() and set_history() copy the history deeply, so editing a message they return or receive no longer changes the recorded history; change it through set_history() / setHistory(). A second streaming_response_stateful while one is in flight on the same client raises ConcurrentCallError: read the first stream to its stop event, abort it or close it first, or give each conversation its own client. A message with nothing a client can send, empty or thinking alone, raises InvalidMessageError naming its message_index / messageIndex, where it was dropped or sent empty (#291).
Install
pip install mmsp==0.5.6
npm install @prismshadow/mmsp@0.5.6