release aidev SIG 3/5

Oh My Pi v17.1.6: pre-model-call budget gate, SiliconFlow providers, Advisor cost visibility

Adds a pre-model-call gate (beforeModelCall) that lets hosts refuse a request before the provider is called (budget, prompt size, handoff). SiliconFlow and SiliconFlow (China) join the built-in API-key login providers with live model discovery. The coding agent adds separate Advisor cost visibility to the status line, makes the task tool's per-spawn effort parameter opt-in, and caps it via task.maxEffort. Steering interjections are now wrapped in a <system-notice> instead of a nested tag pair. Multiple MCP resource URI resolution gaps are fixed.

PUBLISHED2026-07-27
OBSERVED2026-08-21
AGE29d
SOURCES1

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

  • Added AgentLoopConfig.beforeModelCall gate: receives the finalized provider context and run abort signal, may return { stop: true, reason? } to end the run before the provider is called
  • Agent.setBeforeModelCall installs the host callback; Agent.addBeforeModelCall registers an additional one without displacing it and returns a disposer
  • Input message events (prompt, steering, soft reminders) are now emitted once provider-context preparation succeeds, so a pre-model gate can veto before any turn opens

@oh-my-pi/pi-ai

  • Added getProxyForUrl() for transports needing provider-specific proxy environment resolution with NO_PROXY support
  • Added SiliconFlow and SiliconFlow (China) to the built-in API-key login provider catalog

@oh-my-pi/pi-catalog

  • Added SiliconFlow providers (siliconflow, siliconflow-cn) with dynamic-only OpenAI-compatible model discovery; SILICONFLOW_API_KEY / SILICONFLOW_CN_API_KEY environment variables wired into getEnvApiKey

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

  • Added separate Advisor cost visibility to the status line ($2.67 (sub) + $0.41 (adv))
  • Made task tool's per-spawn effort parameter opt-in through task.enableEffort (defaults to false)
  • Added task.maxEffort to cap the task tool's optional per-spawn effort hint
  • Restructured steering/interjection envelope: user text now wrapped in <system-notice> + raw message instead of <user_interjection><message>
  • Fixed disabled higher-priority MCP server no longer disabling a same-named lower-priority one
  • Fixed MCP tool-name collision winner flipping when the current owner reconnects
  • Fixed MCP resources with custom URI schemes being treated as missing filesystem paths
  • Fixed three native MCP resource URI resolution gaps (trailing slash, opaque URIs, failing template list)
  • Fixed custom LSP servers sending languageId: "plaintext" by honoring optional per-server languageId in lsp.json
  • Fixed interactive extension confirmations ignoring dialogOptions

COMMUNITY

No curated reactions recorded for this event. Facts and takes are kept in separate layers — community context is added by hand, never blended into the record above.