@oh-my-pi/pi-agent-core
Added
- Added the provider-neutral native computer-call lifecycle, preserving observation outputs and input actions across pending and acknowledged tool results.
Changed
- Queued steering no longer hard-aborts non-interruptible tools (e.g.
bash): it aborts interruptible waits only and raises a cooperative steering signal (ToolCallContext.steeringSignal) that long-running tools may observe to finish early or background themselves. The mid-batch steering/IRC watch now runs for every tool batch instead of only batches containing an interruptible tool.
@oh-my-pi/pi-ai
Added
- Added
setCodexAttestationProviderAPI for injectingx-oai-attestationheaders in ChatGPT-OAuth Codex requests - Added OAuth account session pinning and active status tracking in storage
- Added OpenAI Responses native computer-use transport, including batched actions and exact
computer_call/computer_call_outputreplay with pending/acknowledged safety checks andimage_url/file_idoutput references. Models without native support receive the same action surface as a regular function tool; provider-specific tool-choice forcing is used where supported. - Added
PI_CODEX_RESPONSES_LITEto override the catalog-selected Codex Responses transport for diagnostics (1/trueforces Lite;0/falseforces the standard body). - Added caller-owned
cachedContentongoogle-generative-aiandgoogle-vertexGenerateContent options: pass an opaque cache resource name through the shared builder (blank values rejected); no create/refresh/delete lifecycle and no guessed model/project/location validation; existingcachedContentTokenCount→Usage.cacheReadnormalization is unchanged. - Added Anthropic extra-usage reporting across
omp usage, interactive/usage, and ACP/usage: the OAuth usage endpoint's authoritativespendpayload (or legacyextra_usagefallback when absent) is normalized into aClaude Extra UsageUSD row; capped accounts show limit/remaining/fractions and status, while uncapped spend exposes only its absolute used amount—rendered as$… usedin CLI/TUI and123.45 usd usedin ACP—without a fabricated cap, percentage, or status. (#5575) - Added process-scoped OAuth account pools for trusted auth-broker clients via
OMP_AUTH_BROKER_ACCOUNT_POOL_FILE, consistently filtering snapshots, streaming updates, refreshes, and usage reports to selected OAuth identities while leaving API-key credentials and the shared encrypted snapshot cache unrestricted. - Added opt-in Vercel AI Gateway automatic prompt caching for OpenAI Chat Completions while preserving
onlyandorderrouting preferences. - Added Vercel AI Gateway Responses cache anchors and cache lifetimes, emitted only with automatic caching.
- Added opt-in OpenAI GPT-5.6 explicit prompt-cache controls for Responses and Chat Completions. Existing requests remain implicit; the policy marks at most one existing stable-history block and is rejected locally on unsupported explicit routes.
- Forwarded
statefulResponsesthroughstreamSimple, so diagnostic callers can explicitly disable OpenAI Responsesprevious_response_idchaining. - Added native QwenCloud Token Plan API-key login, model discovery, and an optional interactive console-Cookie prompt for 5-hour and 7-day quota reporting (#6151).
- Added model-scoped usage health and same-provider reselection for native coding-plan credential pools, preserving OAuth/login-pool precedence, scoped broker blocks, sibling rotation state, and conservative unknown-account handling while excluding ordinary configured API keys (#5018).
Fixed
- Fixed stateful OpenAI Responses explicit cache breakpoints being restored onto edited historical messages, ensuring full replays recompute the latest stable cache boundary.
- Fixed ChatGPT Codex standard and Lite transports rejecting or hiding native computer-use payloads by unrolling the tool definition, forced choice,
computer_call, andcomputer_call_outputinto ordinary function-tool forms.
@oh-my-pi/pi-catalog
Added
- Added catalog metadata for models that support native computer-use requests.
- Added resolved Bedrock Converse prompt-cache compatibility limits, including explicit 5-minute checkpoint support for bundled Nova Lite, Micro, Pro, Premier, and Nova 2 Lite models plus their documented in-region, regional, and global IDs, and model-specific 1-hour Claude retention.
- Added resolved Bedrock Converse prompt-cache compatibility limits, including explicit 5-minute checkpoint support for bundled Nova Lite, Micro, Pro, and Premier models plus Nova Premier's documented in-region model ID, and model-specific 1-hour Claude retention.
- Added the native Meta Model API provider and Muse Spark 1.1 with Responses API reasoning replay, image input, and the full supported reasoning-effort ladder (#4941).
- Added an opt-in Vercel AI Gateway automatic prompt-cache compatibility option alongside provider routing preferences.
- Added Vercel AI Gateway Responses cache-anchor and cache-lifetime compatibility controls.
- Added resolved OpenAI GPT-5.6 prompt-cache breakpoint capability metadata, keeping older models and compatible endpoints opt-in only.
- Added the native
alibaba-token-planprovider with QwenCloud Token Plan Individual discovery and a curated chat-model fallback catalog (#6151).
@oh-my-pi/pi-coding-agent
Added
- Added the
/session pinsubcommand and account picker to pin provider OAuth accounts for the current session - Added the disabled-by-default
computeressential tool with configurable enablement, backend, display, and maximum width/height settings. Native desktop execution runs through aDesktopSessionworker; observation uses read approval, input uses exec approval, and provider checks always prompt and fail closed. - Added the
/computerslash command (on/off/status/toggle) to enable or disable the computer tool for the current session without persisting settings. - Exposed
computerto models without native OpenAI computer-use support as a regular function tool with a typed GA action schema; the same native desktop backend and approval policy apply on both paths. - Hardened computer action ingress: action-specific fields, modifier/key arrays, coordinates, drag points, and scroll deltas fail closed before native input; numeric fields must be signed 32-bit integers and coordinates must be non-negative.
Changed
- Replaced Chromium-backed
/livemedia and external speech recorder/player subprocesses with the cross-platform native microphone, speaker, Opus, and WebRTC stack from@oh-my-pi/pi-natives.
Fixed
- Fixed live-call attestation depending on the ChatGPT desktop app being installed:
generateLiveAttestationnow mints DeviceCheck tokens in-process through the@oh-my-pi/pi-nativesdeviceCheckGenerateTokenbinding instead of probing/Applicationsfor the app'sdevicecheck.nodeaddon, so thex-oai-attestationheader works on hosts without the desktop app and drops thecreateRequireaddon probing; the attestation provider is now wired up to@oh-my-pi/pi-aifor ChatGPT-OAuth Codex requests. - Fixed
xd://device execution failures rendering aswriteerrors instead of using the mounted tool's own error renderer. - Fixed custom tools without bespoke renderers losing the default state-tinted card when mounted under
xd://; dispatched calls now keep their label, arguments, status, output preview, and expansion affordance instead of dumping a bare result line into the transcript. - Fixed the clipboard image-paste keybind mangling copied URL text into a bogus path error on macOS (e.g.
Image not found at /https/::i.can.ac:CE4Ek3.pngfor a copiedhttps://i.can.ac/CE4Ek3.png). AppleScript'sthe clipboard as «class furl»coerces plain text into a file URL by treating the string as an HFS path (:↔/swap), soreadMacFileUrlsFromClipboardreturned a garbage path that dead-ended inhandleImagePathPasteinstead of falling through to the text paste. The script now bails early viaclipboard info for «class furl»unless the pasteboard actually carries apublic.file-urlrepresentation, so URL/text clipboards paste as text. - Fixed spilled tool-output artifact descriptors leaking on error/abort paths.
OutputSink.dump()was the only path that closed the spillBun.FileSink, but the bash and Python executors re-throw on failure and theirfinallyblocks never closed the sink, so a large-output command that errored leaked the artifact descriptor until an unrelated read (e.g. aSKILL.mdload) hitEMFILE.OutputSinknow exposes an idempotentdispose()that closes the sink exactly once, wired into every executor'sfinally(#6463). - Fixed the first submitted prompt stalling while the local tiny-title worker started: the interactive submit handler now paints the pending user row before starting title generation, and startup prewarms an idle, unref'd worker so the first submit reuses a live subprocess instead of paying spawn latency ahead of the first frame (#6462).
- Fixed legacy Pi extensions failing validation when importing the upstream
keyTextkeybinding helper (#6470).
@oh-my-pi/pi-natives
Added
- Added native
AudioCapture,AudioPlayback, andLiveWebRtcPeerclasses for low-latency microphone capture, gapless speaker playback, and WebRTC offer/answer sessions with Opus media andoai-eventsdata-channel delivery. - Added a macOS
deviceCheckGenerateTokenexport that generates Apple DeviceCheck attestation tokens natively: it drivesDCDevice.generateTokenthrough raw Objective-C runtime FFI with a hand-built completion block literal and a bounded one-second wait, resolving{ supported, tokenBase64, error, latencyMs }to mirror the ChatGPT desktop app'sdevicecheck.nodeaddon contract. Non-macOS builds resolvesupported: falsewithout touching the network. - Added a genuine native desktop backend for computer use, bundled in the core addon on every published platform: macOS Quartz/CGEvent, Windows Win32/
SendInput, and a pure-Rust Linux X11 backend (x11rbcapture over the display socket, XTest input with keysym mapping) that links no GUI system libraries — so Linux x64/arm64, glibc and musl are all supported and headless hosts are unaffected. Wayland sessions work through XWayland. Execute batches enforce a 60-second native deadline (DESKTOP_DEADLINE_EXCEEDED) and never emit input after it expires; unsupported pure-Wayland capture and out-of-XTest-range or negative-origin coordinate layouts fail closed.
Fixed
- Fixed macOS computer screenshots taking roughly 30 seconds under Bun by replacing xcap's deprecated window-list capture with a bounded system capture path; direct screenshots now complete in under half a second on the verified host.
@oh-my-pi/pi-tui
Fixed
- Fixed WarpTerminal wrapping streamed Compatibility Jamo at the platform-default width instead of its rendered one-cell width (#6461).
What's Changed
- feat: add native Codex computer use by @usr-bin-roygbiv in #6448
- fix(tui): correct Warp compatibility Jamo width by @roboomp in #6467
- fix(tools): close spilled output descriptors on error/abort paths by @roboomp in #6468
- fix(tui): prewarm tiny-title worker off the first-submit hot path by @roboomp in #6469
- fix(coding-agent): restore legacy keyText export by @roboomp in #6472
Full Changelog: v17.1.0...v17.1.1