You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changed
Bumped the bundled upstream pi runtime libraries @earendil-works/pi-agent-core, @earendil-works/pi-ai, and @earendil-works/pi-tui from ^0.79.3 to ^0.79.4, added semver as an explicit runtime dependency for package/version checks, and aligned companion extension peer ranges so Atomic inherits upstream provider/model metadata updates, agent-core fixes, the new terminal background-color query used by first-run theme detection, and shared TUI wrapping/keyboard compatibility fixes.
Clarified models.json value-resolution docs for Atomic's intentional divergence from upstream pi v0.79.4: legacy uppercase env-var-like provider values are still migrated to explicit $VAR syntax on startup when the same-named environment variable is present, while new configs should use $VAR/${VAR} explicitly and non-migrated values remain literals.
Changed package install/update handling to respect npm semver ranges instead of forcing ranged package specs to latest, preserve configured npm specs during batch updates, locate pnpm global package roots when pnpm root -g is unavailable, and exit immediately after package commands complete.
Updated extension docs and examples for the upstream v0.79.4 API clarifications: pi.getActiveTools() returns active tool names while pi.getAllTools() returns metadata including promptGuidelines, long-lived resources should be opened from session-scoped hooks and cleaned up in session_shutdown, and question/questionnaire example UIs wrap long prompts and option descriptions without truncation.
Removed the bundled subagent acceptance and no-mutation completion-gate behavior from the CLI-visible subagent extension: no acceptance field, inferred gate, acceptance-report prompt injection/parsing, completionGuard config, or acceptance/completion-guard status display remains. Migration guidance now directs users to remove stale acceptance fields from subagent calls/chains/parallel items and move validation requirements into task text; JSON chain rewrites drop legacy acceptance entries (#1398).
Replaced the verbatim context-compaction planner's fixed turn cap and mode split with a deterministic strict reduction loop driven by configurable compaction parameters: compression_ratio (fraction to keep, default 0.5), preserve_recent (default 2), and query (explicit or auto-detected). The prompt substitutes the effective ratio-derived target as a hard completion requirement, hooks receive the parameters through event.parameters/preparation.parameters/result.parameters, extension ctx.compact() can override them per run, the runtime exits only once validated deletion stats meet the target, and premature plain-text exits receive an automatic nudge to keep removing message entries/content blocks. The planner still balances early search/read exploration with quick exploitation of high-confidence low-value deletion targets, the context_compaction_budget progress tool reports context-window fullness and remaining reduction work while inheriting the session's current model thinking level, and legacy parsing of deletion JSON from final assistant prose has been removed so only validated tool state can drive compaction.
Fixed
Fixed Anthropic/GitHub Copilot extended-thinking replay by repairing provider payloads so same-model thinking and redacted_thinking blocks are restored byte-for-byte after provider conversion and extension before_provider_request hooks, and by making compaction treat retained thinking-bearing assistant messages as all-or-nothing so sibling tool calls/text cannot be partially removed. This covers signed empty thinking blocks, sanitized thinking text, and compacted sessions that previously triggered 400 thinking blocks ... cannot be modified failures.
Fixed post-compaction context usage accounting so the footer no longer trusts provider totalTokens when normalized usage components are available and avoids double-counting Anthropic-compatible cache buckets that mirror input tokens, preventing compacted sessions from displaying roughly doubled context-window percentages such as ~117% when the active prompt is closer to ~58%.
Fixed package commands to drain stdout/stderr before the forced post-command exit so piped atomic list, help, progress, and self-update fallback output is not truncated under Node while still terminating leaked extension handles.
Fixed custom models.json providers whose apiKey references an unset explicit environment variable so their models are omitted from /model, --list-models, available-model RPC responses, and automatic fallback candidates until the environment variable is configured.
Fixed bash/child-process output draining so late stdout/stderr arriving after process exit continues draining while active, quiet inherited pipes release promptly, endlessly noisy detached descendants are bounded by a longer active-drain cap, and the built-in bash tool ignores output after its result accumulator has been finalized.
Fixed npm package source resolution to re-resolve and re-validate the managed install path after installing a configured semver range, preventing stale legacy global package copies from being loaded.
Fixed explicit npm dist-tag package sources such as npm:pkg@beta and npm:pkg@latest so online resolution verifies installed copies against the resolved registry target before accepting them, while offline resolution keeps already-installed tag-based resources usable without attempting registry or install work.
Fixed interactive shutdown ordering so SIGTERM/SIGHUP-triggered exits keep signal handlers installed until terminal cleanup and extension session_shutdown disposal finish, preventing terminal restoration from being skipped during signal-exit handling.
Fixed first-run theme selection to query the terminal OSC 11 background color before falling back to COLORFGBG, persist high-confidence auto-detected dark/light themes, and wrap /tree help rows by semantic chunks instead of truncating keybinding hints.
Fixed release publishing to generate and upload a SHA256SUMS asset alongside the six Atomic binary archives.
Fixed workflow stages launched from workflows discovered through atomic -e to inherit the parent chat's custom resource-loading snapshot (extensions/tools, subagents and agent definitions, skills, prompt templates, themes, workflows, packages, and trusted borrowed project-local resources) without sharing the parent resource-loader instance.
Fixed context compaction recent-entry and id-only deletion guards so context_delete attempts against disallowed context entries now return explicit non-terminating correction errors, exact deletion payloads with transcript text or replacement content are rejected instead of ignored, context_grep_delete silently ignores rejected matches while deleting allowed matches without counting rejected blocks as removals, and context_grep_delete keeps maxMatches scoped to one tool call without adding any cumulative deletion cap.
Fixed bundled workflow and subagent structured-output gates to recover from missing or invalid structured_output final answers by issuing up to three corrective retries that echo the actual contract or schema-validation error before failing.
Fixed bundled workflow failed-stage metadata so error-stage transcripts remain discoverable and follow-up messaging resumes from the failed conversation instead of resetting to an empty session.
Fixed context compaction so older assistant thinking and redacted_thinking blocks can be removed like other stale blocks, while thinking or redacted_thinking blocks in the latest assistant message remain rejected by validation and paired tool-result restoration still preserves active context integrity (#1386).
Fixed bundled workflow graph rendering/runtime state for limited-concurrency ctx.parallel fan-outs so queued branches now keep sibling parentage after earlier branch failures.
Fixed context compaction to universally protect every content block in the latest retained assistant message when that message contains thinking or redacted_thinking, so context_delete and context_grep_delete cannot remove visible sibling blocks or make an older partially-filtered thinking-bearing assistant become the latest retained assistant (#1405).