@oh-my-pi/pi-agent-core
Added
- Added
SoftToolRequirementsupport togetToolChoice: a host can require a tool by returning a soft requirement instead of a hardToolChoice. The loop injects the supplied reminder once (leavingtool_choiceon auto), and escalates to a one-turn forced choice — skipping any detour tool batch — only if the model fails to call the required tool, avoiding the provider message-cache invalidation of forcing every turn. - Added
pruneToolDescriptionsoption to reduce token usage by stripping tool descriptions from provider-bound specs
Fixed
- Improved token estimation accuracy for compaction summaries containing multi-block content
@oh-my-pi/pi-ai
Added
- Added utility functions to strip schema descriptions for optimized LLM context usage
@oh-my-pi/pi-coding-agent
Added
- Added a prompt-cache miss marker: a slim
⊘ cache miss · <n> tokensdivider above an assistant turn whose request lost the provider prompt cache. Detected from per-turn usage — the previous turn cached a meaningful prefix but this request read none of it back and reprocessed the prompt (e.g. after a thinking-level / service-tier / model change, tool or system-prompt change, or a history rewrite). Reports the reprocessed token count. Toggle with thedisplay.cacheMissMarkersetting (Appearance → Display, on by default).
Changed
- Optimized preview workflows by removing forced tool choices, reducing prompt cache invalidations
- Unified injected message styling with consistent rounded outlines and icon-tagged headers
- Refreshed branch summary messages with a uniform banner style to match compaction points
- Updated skill invocation UI with a compact header, home-shortened paths, and dynamic line counts
- Refined session context to utilize history blocks instead of raw images for snapcompact summaries
- Refreshed the skill-prompt transcript message to match the rest of the TUI: an icon-tagged
✦ skill <name>header (with invocation args trailing), a single meta line with a home-shortened, click-to-open path in the accent color and the prompt size in muted, and a rounded outline around the card. Replaces the old[skill]label with the flatSkill:/Path:/Prompt:key/value dump (which also leaked the absolute home directory). - Refreshed the default custom/hook transcript message frame to a rounded, icon-tagged card: the
[customType]bracket label is replaced by an<icon> <type>header (📦 for extension messages, 🪝 for legacy hook-role messages) with a subtle outline, matching the skill card. Covers every extension/hook custom type without a bespoke renderer. - Refreshed the branch-summary transcript message to render as the same slim divider banner as
/compact, handoff, and snapcompact (⑂ branch · ctrl+o, summary revealed on expand) instead of a[branch]box. - Optimized network traffic by stripping tool descriptions from provider tool schemas
- Renamed the prompt setting from
repeatToolDescriptions/ "Repeat Tool Descriptions" toinlineToolDescriptors/ "Inline Tool Descriptors" and enabled inline descriptors by default. - Snapcompact compaction summaries now reach the model as ordered history blocks instead of one lead-in text block plus appended images: plain text at the oldest edge, an imaged middle, then plain text at the newest edge. This matches the new text-first snapcompact archive layout and preserves chronological order in the provider prompt.
- Fixed
/dumpoutput repeating the tool inventory twice wheninlineToolDescriptorsis enabled. - Unified TUI border corners on the rounded style: tool-result frames, overlays, code fences, debug frames, and the interactive bash box now draw rounded corners (
╭╮╰╯) to match the editor and message cards, instead of mixing rounded boxes with sharp (┌┐└┘) ones.boxRoundnow carries the sharp tee/cross junction glyphs (no rounded variant exists), so dividers still honorboxSharp.tee*/crosstheme overrides. Markdown tables intentionally keep the fully sharpboxSharpset; its corner tokens now affect tables only.
@oh-my-pi/snapcompact
Added
- Added
historyBlocks(archive)to reconstruct ordered history blocks from archive data
Changed
- Refactored compaction to be text-sourced, re-rendering from unified
Archive.textsource - Implemented foveated archive layout (HQ edges, dense LQ middle) for optimized context usage
- Raised
MAX_FRAMES_DEFAULTto 80 and consolidatedPROVIDER_IMAGE_BUDGETS - Updated OpenRouter to use standard 90-image budget
- Updated prompt instructions to clearly distinguish between plain-text and image history regions
Options.maxFramesis now an upper limit clamped toMAX_FRAMES_DEFAULT, not a per-call default- Rewrote the resume summary prompt into a structured reading guide (turn headings, grid/two-column layout, ink notes) and render file operations inline as a
FILESsection instead of a spliced<files>tag
Fixed
- Fixed context budget undercounting by raising
FRAME_TOKEN_ESTIMATEto 5024 - Improved file list formatting in compaction summaries
@oh-my-pi/pi-tui
Added
Boxnow accepts an optionalborder(box-drawing glyphs + colorizer) and exposessetBorder(), drawing a colored outline around its padded/background content. The border is automatically dropped at widths too narrow to frame so a bordered box never overflows its given width.
Full Changelog: v16.0.11...v16.1.0