@oh-my-pi/pi-ai
Added
-
SimpleStreamOptions.openrouterVariant("nitro","floor","online","exacto", …) — when set, appends:<variant>to OpenRouter model IDs at request time, leaving ids that already carry an explicit:suffixuntouched. Plumbed throughopenai-completionsand the pi-native gateway forwarder. -
xAI Grok OAuth (SuperGrok Subscription) provider in
/login. Loopback PKCE flow on127.0.0.1:56121; the token unlocks Grok-4.x chat. Ported from NousResearch/hermes-agent (MIT). -
OpenRouter provider in
/login. API-key paste flow validated againsthttps://openrouter.ai/api/v1/auth/key(the/modelsendpoint is public and cannot validate auth). The pasted key is stored under the existingopenrouterprovider id used byOPENROUTER_API_KEY. -
XAI_OAUTH_TOKENenvironment variable accepted as a headless fallback for the xAI Grok OAuth provider.
Changed
OpenAIResponsesOptionsgains four optional, provider-agnostic fields that adapter wrappers can use to compose provider-specific behavior on top of the generic transport:includeEncryptedReasoning(gatesinclude: ["reasoning.encrypted_content"]; defaulttrue, preserves current behavior),filterReasoningHistory(strips replayedtype: "reasoning"items from conversation history; defaultfalse),headers(merged onto the client's default headers), andextraBody(merged into the request payload).- The existing
XAI_API_KEYpath is unchanged — it continues to use the OpenAI-completions transport.
Fixed
- Fixed OpenRouter DeepSeek V4 tool-call follow-up requests replaying normalized
reasoningas-is instead of DeepSeek's requiredreasoning_content, which caused HTTP 400 errors in thinking mode. (#1445)
@oh-my-pi/pi-coding-agent
Added
-
providers.openrouterVariantsetting (Settings → Providers → "OpenRouter Routing") to default OpenRouter requests to a routing-variant suffix (:nitro,:floor,:online,:exacto). Selectors that already name a variant (e.g.openrouter/anthropic/claude-haiku:nitro) keep precedence. -
generate_imagesupports xAI Grok Imagine viaproviders.image=xai. Supportsgrok-imagine-image(default) andgrok-imagine-image-qualityat aspect ratios1:1,16:9,9:16,4:3,3:4,3:2,2:3. Uses the xAI Grok OAuth credential when available, otherwiseXAI_API_KEY. -
New
ttstool synthesises speech via xAI Grok Voice behind the disabled-by-defaulttts.enabledsetting. Built-in voicesara,eve(default),leo,rex,sal; custom voice IDs also accepted. Output codec inferred from theoutput_pathsuffix (.wav→wav, elsemp3). Up to 15,000 characters per request.
Fixed
- Fixed plan-mode re-entry after approval reopening a fresh
local://PLAN.mdinstead of the approved titled plan artifact, which could duplicate plan content and fail approval on an existing destination. - Fixed
readURL reader mode aborting after a stalled Jina request instead of falling back to trafilatura/lynx/native: Jina (and Parallel extract) now have their own per-attempt sub-budget capped at 10s, the catch handler honours only real user cancellation, and the in-process native renderer is always attempted on already-loaded HTML (#1449)
What's Changed
- fix(coding-agent): reopen approved plan on plan-mode reentry by @metaphorics in #1448
- fix(ai,coding-agent): stabilize xAI Grok OAuth by @metaphorics in #1446
- fix(agent): compaction reasoning effort — fallback to off when reasoning unsupported by @metaphorics in #1444
- fix(ai): replay OpenRouter DeepSeek reasoning_content by @roboomp in #1447
- fix(search): wrap native regex-build errors in ToolError by @oldschoola in #1425
- fix(providers): prune stale synthetic model cache entries by @roboomp in #1418
- fix(hashline): require anchor-content alignment in session-chain replay recovery by @oldschoola in #1422
- fix(xiaomi): add CN token-plan cluster as last fallback by @hanbinnoh in #1442
Full Changelog: v15.5.6...v15.5.7