chore(deps): update dependency can1357/oh-my-pi to v15.10.8 #53

Merged
renovate-bot merged 1 commit from renovate/can1357-oh-my-pi-15.x into main 2026-06-09 05:00:47 +00:00
Collaborator

This PR contains the following updates:

Package Update Change
can1357/oh-my-pi patch 15.10.615.10.8

⚠️ Warning

Some dependencies could not be looked up. Check the warning logs for more information.


Release Notes

can1357/oh-my-pi (can1357/oh-my-pi)

v15.10.8

Compare Source

@​oh-my-pi/pi-agent-core

Added
  • Added optional fetch overrides to SummaryOptions and compact/generateSummary so remote compaction can use custom HTTP clients
  • Added optional fetch option to ProxyStreamOptions to control the HTTP request used by streamProxy
  • Added optional fetch overrides to requestOpenAiRemoteCompaction and requestRemoteCompaction for injectable HTTP transport
  • Added the upstream provider that served a request (AssistantMessage.upstreamProvider, e.g. OpenRouter's routed provider) as a pi.gen_ai.response.upstream_provider chat-span telemetry attribute, alongside the existing response id and time-to-first-chunk.

@​oh-my-pi/pi-ai

Added
  • Added optional fetch transport override (fetch?: FetchImpl) to Google, Ollama, and OpenAI-compatible model-manager options so dynamic model discovery and metadata lookups can use a caller-supplied HTTP client instead of only global fetch
  • Added optional fetch on OAuth controller and API-key validation/login flows so token exchange, refresh, and device/PKCE login requests can be routed through a custom fetch implementation
  • Added optional fetch support to usage polling context, allowing usage providers to execute usage checks using an injected HTTP client
  • Added AssistantMessage.upstreamProvider, capturing the upstream provider an aggregator routed the request to (OpenRouter reports it via a top-level provider field on every chunk, e.g. "Anthropic"). Surfaced from the OpenAI-completions stream alongside responseId.
Fixed
  • Fixed a degenerate OpenAI Codex stream (the model emits whitespace-only function_call_arguments.delta frames forever — commonly seen right after a todo tool call) terminating the turn with an error instead of recovering. The whitespace-loop circuit-breaker now (a) stops aborting the shared per-request AbortControllerrequestSignal is an AbortSignal.any over it, so aborting latched it and made every reopen on the reused requestSetup impossible — and (b) drops the half-built junk tool call and replays the request from scratch, bounded by CODEX_WHITESPACE_LOOP_RETRY_LIMIT (2). Sampling nondeterminism usually clears the loop on a fresh attempt; once the budget is exhausted the error is surfaced as before, but without the junk tool call polluting the message.
  • Capped requested output tokens at 64k (OPENAI_MAX_OUTPUT_TOKENS, mirroring Anthropic's CLAUDE_CODE_MAX_OUTPUT_TOKENS) on OpenAI-family wires with a known upstream output cap — the openai-completions request builder (non-OpenRouter) and the shared responses sampling helper (openai-responses, azure-openai-responses). A model's catalog maxTokens often tracks its context window rather than the upstream's per-request output cap, so requesting the full ceiling 400'd (e.g. z-ai/glm-4.7 asking for 131072 output exceeded the upstream's 131072-token total context). Output is now min(requested, model.maxTokens, 64000).
  • Stopped sending max_tokens/max_completion_tokens on OpenRouter (openrouter.ai) completions requests. OpenRouter filters out any upstream whose advertised output cap is below the requested max_tokens, so a value derived from the catalog (which reflects the highest-cap provider) silently excluded lower-cap upstreams — provider.order: ["cerebras"] for z-ai/glm-4.7 fell through to DeepInfra because Cerebras's ~40k output cap is below the request, while only: ["cerebras"] (no fallback target) bypassed the filter and worked. Omitting the field lets each upstream self-cap and keeps provider routing (only/order) honored. Kimi via OpenRouter stays exempt — it derives TPM rate limits from max_tokens.

@​oh-my-pi/pi-coding-agent

Added
  • Added an optional fetch option to CustomToolContext so custom tools can use a caller-provided HTTP implementation
  • Added optional fetch overrides to ModelRegistry construction and MCP/web search/tool network calls, enabling callers to inject custom HTTP clients instead of relying on global fetch
  • Added a bash.enabled setting to disable the model-facing bash tool while leaving user-initiated bang/RPC bash commands available.
  • Added an @<upstream> model-selector suffix to pin an aggregator model to a single upstream provider per invocation, e.g. --model openrouter/z-ai/glm-4.7@&#8203;cerebras (sets OpenRouter provider.only; Vercel AI Gateway models map to vercelGatewayRouting.only). Resolved through parseModelPattern, so it works for --model/--smol, model roles, and the SDK, and composes with a trailing thinking level (...@&#8203;cerebras:high). The base must resolve to an aggregator (openrouter.ai / ai-gateway.vercel.sh); otherwise the @ stays part of the id, so ids that legitimately contain @ (claude-opus-4-8@&#8203;default, workers-ai/@&#8203;cf/...) are unaffected.
Fixed
  • Fixed a turn-ending provider error (e.g. a 502 whose body is the proxy's full HTML page) flooding the transcript: AnthropicApiError folds the entire response body into errorMessage, and the inline transcript render reprinted it verbatim — every embedded blank line included — leaving a tall mostly-empty block ending in </html>. The inline error now drops blank lines, clamps to 8 lines, and width-truncates each line via getPreviewLines, matching the pinned error banner.

@​oh-my-pi/pi-mnemopi

Added
  • Added a fetch option to ExtractionClient to inject a custom fetch implementation for remote LLM requests
  • Added an optional fetch option to extractFacts to control the transport used for remote extraction calls
  • Added support for passing a custom fetch implementation through complete and summarizeMemories via remote LLM options

@​oh-my-pi/pi-tui

Fixed
  • Fixed TUI renders repeatedly clearing terminal scrollback after content filled the viewport. Unknown viewport probes no longer let foreground-streaming offscreen growth take the destructive historyRebuild path on every frame; newly appended tail rows stay reachable while stale history waits for a safe checkpoint. (#​2154)

@​oh-my-pi/pi-utils

Removed
  • Removed the exported hookFetch API, which previously intercepted globalThis.fetch via middleware handlers
  • Removed hookFetch from the package entrypoint, so imports from @.../utils no longer provide this fetch interception helper

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v15.10.7...v15.10.8

v15.10.7

Compare Source

@​oh-my-pi/pi-ai

Fixed
  • Fixed first-party Anthropic requests returning HTTP 400 "Invalid signature in thinking block" after interrupting the model during its visible output. transformMessages stripped the signature from every thinking block of an aborted/error turn, including blocks that had already finished streaming — Anthropic delivers a block's signature at content_block_stop before the next block starts, so a thinking block followed by text/tool_use is fully signed. The valid signature was then replayed empty (signature: ""), which signature-enforcing Anthropic rejects, including when the provider is routed through an LLM gateway baseUrl. Only the single mid-stream block at the abort point is now treated as untrustworthy; completed thinking blocks keep their replayable signatures (#​2144).
  • Pinned a regression test against issue #​2123: OAuth requests to adaptive-thinking Claude Opus models (4.6+) ship a context_management.edits[clear_thinking_20251015] block paired with the thinking field, but the eager-todo prelude (and other paths that force tool_choice to tool/any on the first user turn) route through disableThinkingIfToolChoiceForced, which would strip params.thinking while leaving the orphan context_management behind. The Anthropic API then rejected the request with 400 ... clear_thinking_20251015 strategy requires thinking to be enabled or adaptive. The fix that lands in [15.10.5] now drops both fields together; the new test locks the contract so the strategy can never outlive its enabling thinking payload again.
  • Fixed Antigravity usage counters so exhausted Google/Gemini quota renders as 0% free while separate Anthropic/OpenAI-backed Antigravity model counters remain visible independently, without replaying stale pre-fix cached usage reports.

@​oh-my-pi/pi-coding-agent

Fixed
  • Fixed MCP OAuth fallback rendering to show a short terminal hyperlink and keep the raw authorization URL on one unwrapped copy line (#​2121).
  • Fixed omp startup blocking 25–30 s on a single unresponsive MCP server when no cached tools were available for it. MCPManager.connectServers used to fall through to an unbounded Promise.allSettled over every still-pending server without a cached tool list, so one server stuck waiting on the per-request MCP timeout (OMP_MCP_TIMEOUT_MS, default 30 000 ms) gated the entire UI ready signal. Pending-without-cache servers are now left in flight: their tools surface via the existing background #onToolsChangedrefreshMCPTools path the moment the connect completes, and failures continue to log through the background catch handler (#​2100).

What's Changed

Full Changelog: https://github.com/can1357/oh-my-pi/compare/v15.10.6...v15.10.7


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) | patch | `15.10.6` → `15.10.8` | --- > ⚠️ **Warning** > > Some dependencies could not be looked up. Check the warning logs for more information. --- ### Release Notes <details> <summary>can1357/oh-my-pi (can1357/oh-my-pi)</summary> ### [`v15.10.8`](https://github.com/can1357/oh-my-pi/releases/tag/v15.10.8) [Compare Source](https://github.com/can1357/oh-my-pi/compare/v15.10.7...v15.10.8) #### [@&#8203;oh-my-pi/pi-agent-core](https://github.com/oh-my-pi/pi-agent-core) ##### Added - Added optional `fetch` overrides to `SummaryOptions` and `compact`/`generateSummary` so remote compaction can use custom HTTP clients - Added optional `fetch` option to `ProxyStreamOptions` to control the HTTP request used by `streamProxy` - Added optional `fetch` overrides to `requestOpenAiRemoteCompaction` and `requestRemoteCompaction` for injectable HTTP transport - Added the upstream provider that served a request (`AssistantMessage.upstreamProvider`, e.g. OpenRouter's routed provider) as a `pi.gen_ai.response.upstream_provider` chat-span telemetry attribute, alongside the existing response id and time-to-first-chunk. #### [@&#8203;oh-my-pi/pi-ai](https://github.com/oh-my-pi/pi-ai) ##### Added - Added optional `fetch` transport override (`fetch?: FetchImpl`) to Google, Ollama, and OpenAI-compatible model-manager options so dynamic model discovery and metadata lookups can use a caller-supplied HTTP client instead of only global `fetch` - Added optional `fetch` on OAuth controller and API-key validation/login flows so token exchange, refresh, and device/PKCE login requests can be routed through a custom `fetch` implementation - Added optional `fetch` support to usage polling context, allowing usage providers to execute usage checks using an injected HTTP client - Added `AssistantMessage.upstreamProvider`, capturing the upstream provider an aggregator routed the request to (OpenRouter reports it via a top-level `provider` field on every chunk, e.g. `"Anthropic"`). Surfaced from the OpenAI-completions stream alongside `responseId`. ##### Fixed - Fixed a degenerate OpenAI Codex stream (the model emits whitespace-only `function_call_arguments.delta` frames forever — commonly seen right after a `todo` tool call) terminating the turn with an error instead of recovering. The whitespace-loop circuit-breaker now (a) stops aborting the shared per-request `AbortController` — `requestSignal` is an `AbortSignal.any` over it, so aborting latched it and made every reopen on the reused `requestSetup` impossible — and (b) drops the half-built junk tool call and replays the request from scratch, bounded by `CODEX_WHITESPACE_LOOP_RETRY_LIMIT` (2). Sampling nondeterminism usually clears the loop on a fresh attempt; once the budget is exhausted the error is surfaced as before, but without the junk tool call polluting the message. - Capped requested output tokens at 64k (`OPENAI_MAX_OUTPUT_TOKENS`, mirroring Anthropic's `CLAUDE_CODE_MAX_OUTPUT_TOKENS`) on OpenAI-family wires with a known upstream output cap — the `openai-completions` request builder (non-OpenRouter) and the shared responses sampling helper (`openai-responses`, `azure-openai-responses`). A model's catalog `maxTokens` often tracks its context window rather than the upstream's per-request output cap, so requesting the full ceiling 400'd (e.g. `z-ai/glm-4.7` asking for 131072 output exceeded the upstream's 131072-token *total* context). Output is now `min(requested, model.maxTokens, 64000)`. - Stopped sending `max_tokens`/`max_completion_tokens` on OpenRouter (`openrouter.ai`) completions requests. OpenRouter filters out any upstream whose advertised output cap is below the requested `max_tokens`, so a value derived from the catalog (which reflects the highest-cap provider) silently excluded lower-cap upstreams — `provider.order: ["cerebras"]` for `z-ai/glm-4.7` fell through to DeepInfra because Cerebras's \~40k output cap is below the request, while `only: ["cerebras"]` (no fallback target) bypassed the filter and worked. Omitting the field lets each upstream self-cap and keeps provider routing (`only`/`order`) honored. Kimi via OpenRouter stays exempt — it derives TPM rate limits from `max_tokens`. #### [@&#8203;oh-my-pi/pi-coding-agent](https://github.com/oh-my-pi/pi-coding-agent) ##### Added - Added an optional `fetch` option to `CustomToolContext` so custom tools can use a caller-provided HTTP implementation - Added optional `fetch` overrides to `ModelRegistry` construction and MCP/web search/tool network calls, enabling callers to inject custom HTTP clients instead of relying on global `fetch` - Added a `bash.enabled` setting to disable the model-facing bash tool while leaving user-initiated bang/RPC bash commands available. - Added an `@<upstream>` model-selector suffix to pin an aggregator model to a single upstream provider per invocation, e.g. `--model openrouter/z-ai/glm-4.7@&#8203;cerebras` (sets OpenRouter `provider.only`; Vercel AI Gateway models map to `vercelGatewayRouting.only`). Resolved through `parseModelPattern`, so it works for `--model`/`--smol`, model roles, and the SDK, and composes with a trailing thinking level (`...@&#8203;cerebras:high`). The base must resolve to an aggregator (`openrouter.ai` / `ai-gateway.vercel.sh`); otherwise the `@` stays part of the id, so ids that legitimately contain `@` (`claude-opus-4-8@&#8203;default`, `workers-ai/@&#8203;cf/...`) are unaffected. ##### Fixed - Fixed a turn-ending provider error (e.g. a 502 whose body is the proxy's full HTML page) flooding the transcript: `AnthropicApiError` folds the entire response body into `errorMessage`, and the inline transcript render reprinted it verbatim — every embedded blank line included — leaving a tall mostly-empty block ending in `</html>`. The inline error now drops blank lines, clamps to 8 lines, and width-truncates each line via `getPreviewLines`, matching the pinned error banner. #### [@&#8203;oh-my-pi/pi-mnemopi](https://github.com/oh-my-pi/pi-mnemopi) ##### Added - Added a `fetch` option to `ExtractionClient` to inject a custom fetch implementation for remote LLM requests - Added an optional `fetch` option to `extractFacts` to control the transport used for remote extraction calls - Added support for passing a custom `fetch` implementation through `complete` and `summarizeMemories` via remote LLM options #### [@&#8203;oh-my-pi/pi-tui](https://github.com/oh-my-pi/pi-tui) ##### Fixed - Fixed TUI renders repeatedly clearing terminal scrollback after content filled the viewport. Unknown viewport probes no longer let foreground-streaming offscreen growth take the destructive `historyRebuild` path on every frame; newly appended tail rows stay reachable while stale history waits for a safe checkpoint. ([#&#8203;2154](https://github.com/can1357/oh-my-pi/issues/2154)) #### [@&#8203;oh-my-pi/pi-utils](https://github.com/oh-my-pi/pi-utils) ##### Removed - Removed the exported `hookFetch` API, which previously intercepted `globalThis.fetch` via middleware handlers - Removed `hookFetch` from the package entrypoint, so imports from `@.../utils` no longer provide this fetch interception helper #### What's Changed - fix(tui): preserve scrollback during overflow growth by [@&#8203;roboomp](https://github.com/roboomp) in [#&#8203;2155](https://github.com/can1357/oh-my-pi/pull/2155) **Full Changelog**: <https://github.com/can1357/oh-my-pi/compare/v15.10.7...v15.10.8> ### [`v15.10.7`](https://github.com/can1357/oh-my-pi/releases/tag/v15.10.7) [Compare Source](https://github.com/can1357/oh-my-pi/compare/v15.10.6...v15.10.7) #### [@&#8203;oh-my-pi/pi-ai](https://github.com/oh-my-pi/pi-ai) ##### Fixed - Fixed first-party Anthropic requests returning HTTP 400 "Invalid `signature` in `thinking` block" after interrupting the model during its visible output. `transformMessages` stripped the signature from every `thinking` block of an `aborted`/`error` turn, including blocks that had already finished streaming — Anthropic delivers a block's signature at `content_block_stop` before the next block starts, so a thinking block followed by `text`/`tool_use` is fully signed. The valid signature was then replayed empty (`signature: ""`), which signature-enforcing Anthropic rejects, including when the provider is routed through an LLM gateway baseUrl. Only the single mid-stream block at the abort point is now treated as untrustworthy; completed thinking blocks keep their replayable signatures ([#&#8203;2144](https://github.com/can1357/oh-my-pi/issues/2144)). - Pinned a regression test against issue [#&#8203;2123](https://github.com/can1357/oh-my-pi/issues/2123): OAuth requests to adaptive-thinking Claude Opus models (4.6+) ship a `context_management.edits[clear_thinking_20251015]` block paired with the `thinking` field, but the eager-todo prelude (and other paths that force `tool_choice` to `tool`/`any` on the first user turn) route through `disableThinkingIfToolChoiceForced`, which would strip `params.thinking` while leaving the orphan `context_management` behind. The Anthropic API then rejected the request with `400 ... clear_thinking_20251015 strategy requires thinking to be enabled or adaptive`. The fix that lands in \[15.10.5] now drops both fields together; the new test locks the contract so the strategy can never outlive its enabling `thinking` payload again. - Fixed Antigravity usage counters so exhausted Google/Gemini quota renders as `0% free` while separate Anthropic/OpenAI-backed Antigravity model counters remain visible independently, without replaying stale pre-fix cached usage reports. #### [@&#8203;oh-my-pi/pi-coding-agent](https://github.com/oh-my-pi/pi-coding-agent) ##### Fixed - Fixed MCP OAuth fallback rendering to show a short terminal hyperlink and keep the raw authorization URL on one unwrapped copy line ([#&#8203;2121](https://github.com/can1357/oh-my-pi/issues/2121)). - Fixed `omp` startup blocking 25–30 s on a single unresponsive MCP server when no cached tools were available for it. `MCPManager.connectServers` used to fall through to an unbounded `Promise.allSettled` over every still-pending server without a cached tool list, so one server stuck waiting on the per-request MCP timeout (`OMP_MCP_TIMEOUT_MS`, default 30 000 ms) gated the entire UI ready signal. Pending-without-cache servers are now left in flight: their tools surface via the existing background `#onToolsChanged` → `refreshMCPTools` path the moment the connect completes, and failures continue to log through the background catch handler ([#&#8203;2100](https://github.com/can1357/oh-my-pi/issues/2100)). #### What's Changed - fix(ai): preserve completed thinking signatures when a turn is aborted mid-output by [@&#8203;roboomp](https://github.com/roboomp) in [#&#8203;2145](https://github.com/can1357/oh-my-pi/pull/2145) - fix(usage): separate Antigravity backend counters by [@&#8203;basedcorp99](https://github.com/basedcorp99) in [#&#8203;2077](https://github.com/can1357/oh-my-pi/pull/2077) - fix(coding-agent): unblock omp startup when an MCP server stalls by [@&#8203;roboomp](https://github.com/roboomp) in [#&#8203;2140](https://github.com/can1357/oh-my-pi/pull/2140) **Full Changelog**: <https://github.com/can1357/oh-my-pi/compare/v15.10.6...v15.10.7> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxNi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
chore(deps): update dependency can1357/oh-my-pi to v15.10.7
Some checks failed
Update hashes / update-hashes (pull_request) Failing after 3m54s
34665c22e1
renovate-bot scheduled this pull request to auto merge when all checks succeed 2026-06-08 23:00:42 +00:00
renovate-bot force-pushed renovate/can1357-oh-my-pi-15.x from 34665c22e1
Some checks failed
Update hashes / update-hashes (pull_request) Failing after 3m54s
to 308c891018
Some checks failed
Update hashes / update-hashes (pull_request) Failing after 43s
2026-06-09 05:00:44 +00:00
Compare
renovate-bot changed title from chore(deps): update dependency can1357/oh-my-pi to v15.10.7 to chore(deps): update dependency can1357/oh-my-pi to v15.10.8 2026-06-09 05:00:45 +00:00
renovate-bot deleted branch renovate/can1357-oh-my-pi-15.x 2026-06-09 05:00:47 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mandlm/omp-nix!53
No description provided.