diff --git a/package-lock.json b/package-lock.json index 1a35716a3..c9de10884 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "prime-agent", - "version": "0.9.3", + "version": "0.9.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "prime-agent", - "version": "0.9.3", + "version": "0.9.4", "workspaces": [ "packages/*", "packages/coding-agent/examples/extensions/with-deps", @@ -15,7 +15,7 @@ "packages/coding-agent/examples/extensions/sandbox" ], "dependencies": { - "@earendil-works/pi-coding-agent": "^0.9.3", + "@earendil-works/pi-coding-agent": "^0.9.4", "get-east-asian-width": "^1.6.0" }, "devDependencies": { @@ -5597,10 +5597,10 @@ }, "packages/agent": { "name": "@earendil-works/pi-agent-core", - "version": "0.9.3", + "version": "0.9.4", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.9.3", + "@earendil-works/pi-ai": "^0.9.4", "typebox": "^1.3.9" }, "devDependencies": { @@ -5631,7 +5631,7 @@ }, "packages/ai": { "name": "@earendil-works/pi-ai", - "version": "0.9.3", + "version": "0.9.4", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "^0.91.1", @@ -5677,14 +5677,14 @@ }, "packages/coding-agent": { "name": "@earendil-works/pi-coding-agent", - "version": "0.9.3", + "version": "0.9.4", "hasInstallScript": true, "license": "MIT", "dependencies": { "@agentclientprotocol/sdk": "^1.3.0", - "@earendil-works/pi-agent-core": "^0.9.3", - "@earendil-works/pi-ai": "^0.9.3", - "@earendil-works/pi-tui": "^0.9.3", + "@earendil-works/pi-agent-core": "^0.9.4", + "@earendil-works/pi-ai": "^0.9.4", + "@earendil-works/pi-tui": "^0.9.4", "@silvia-odwyer/photon-node": "^0.3.4", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", @@ -5813,7 +5813,7 @@ }, "packages/tui": { "name": "@earendil-works/pi-tui", - "version": "0.9.3", + "version": "0.9.4", "license": "MIT", "dependencies": { "@types/mime-types": "^3.0.1", diff --git a/package.json b/package.json index ebbb04ebb..26995da82 100644 --- a/package.json +++ b/package.json @@ -48,9 +48,9 @@ "engines": { "node": ">=22.8.0" }, - "version": "0.9.3", + "version": "0.9.4", "dependencies": { - "@earendil-works/pi-coding-agent": "^0.9.3", + "@earendil-works/pi-coding-agent": "^0.9.4", "get-east-asian-width": "^1.6.0" }, "overrides": { diff --git a/packages/agent/.changes/res-1271-retry-owner.md b/packages/agent/.changes/res-1271-retry-owner.md deleted file mode 100644 index 96e772f5e..000000000 --- a/packages/agent/.changes/res-1271-retry-owner.md +++ /dev/null @@ -1 +0,0 @@ -- Removed the unused `maxRetryDelayMs` agent option; retry delays are owned by the session retry loop. diff --git a/packages/agent/CHANGELOG.md b/packages/agent/CHANGELOG.md index 574e70b05..19bc792ee 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [0.9.4] - 2026-09-08 + +- Removed the unused `maxRetryDelayMs` agent option; retry delays are owned by the session retry loop. + ## [0.8.0] - 2026-08-21 - Added `AgentContinueError` with stable codes (`busy`, `nothing-to-continue`) for `Agent.continue()` precondition failures, so callers classify without matching message text. diff --git a/packages/agent/package.json b/packages/agent/package.json index 33d9fbefe..a15989717 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-agent-core", - "version": "0.9.3", + "version": "0.9.4", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -17,7 +17,7 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@earendil-works/pi-ai": "^0.9.3", + "@earendil-works/pi-ai": "^0.9.4", "typebox": "^1.3.9" }, "keywords": [ diff --git a/packages/ai/.changes/prime-inference-model-catalog.md b/packages/ai/.changes/prime-inference-model-catalog.md deleted file mode 100644 index 347062307..000000000 --- a/packages/ai/.changes/prime-inference-model-catalog.md +++ /dev/null @@ -1 +0,0 @@ -- Added live Prime Inference model names, pricing, limits, modalities, and reasoning support to the bundled catalog. diff --git a/packages/ai/.changes/res-1271-auth-heuristics.md b/packages/ai/.changes/res-1271-auth-heuristics.md deleted file mode 100644 index b9576244d..000000000 --- a/packages/ai/.changes/res-1271-auth-heuristics.md +++ /dev/null @@ -1 +0,0 @@ -- Changed authentication failure classification to require structured evidence. Permission denials now stop retries without marking provider credentials stale. diff --git a/packages/ai/.changes/res-1271-retry-owner.md b/packages/ai/.changes/res-1271-retry-owner.md deleted file mode 100644 index 5eebccf80..000000000 --- a/packages/ai/.changes/res-1271-retry-owner.md +++ /dev/null @@ -1,4 +0,0 @@ -- Removed SDK-internal provider retries (OpenAI, Azure, Anthropic, Bedrock, Codex): providers make a single attempt and report a structured failure so the agent's own retry loop owns every retry. -- Added the server-requested Retry-After delay to structured stream-failure diagnostics. -- Added structured stream-failure diagnostics to the OpenAI-completions and Codex providers, including friendly messages for Codex nested usage-limit error payloads. -- Removed the `maxRetries` and `maxRetryDelayMs` stream options. diff --git a/packages/ai/.changes/service-tier-default-omitted.md b/packages/ai/.changes/service-tier-default-omitted.md deleted file mode 100644 index 7d2fc3b20..000000000 --- a/packages/ai/.changes/service-tier-default-omitted.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed GitHub Copilot requests to omit unsupported service tiers while preserving explicit tiers for other providers, and corrected Anthropic cache-write pricing when streaming usage changes. diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 1a6944ff7..9201456ea 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.9.4] - 2026-09-08 + +- Fixed GitHub Copilot requests to omit unsupported service tiers while preserving explicit tiers for other providers, and corrected Anthropic cache-write pricing when streaming usage changes. +- Changed authentication failure classification to require structured evidence. Permission denials now stop retries without marking provider credentials stale. +- Removed SDK-internal provider retries (OpenAI, Azure, Anthropic, Bedrock, Codex): providers make a single attempt and report a structured failure so the agent's own retry loop owns every retry. +- Added the server-requested Retry-After delay to structured stream-failure diagnostics. +- Added structured stream-failure diagnostics to the OpenAI-completions and Codex providers, including friendly messages for Codex nested usage-limit error payloads. +- Removed the `maxRetries` and `maxRetryDelayMs` stream options. +- Added live Prime Inference model names, pricing, limits, modalities, and reasoning support to the bundled catalog. + ## [0.9.3] - 2026-09-06 - Added GPT-6 Astra to the Codex/ChatGPT OAuth catalog with its mandatory-reasoning effort levels, and bumped the Codex discovery client version to 0.153.4 so account discovery lists it (reported by endcycles and api-moose in discussion #2062). diff --git a/packages/ai/package.json b/packages/ai/package.json index 2ffe0fc7e..04df350ff 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-ai", - "version": "0.9.3", + "version": "0.9.4", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", "main": "./dist/index.js", diff --git a/packages/coding-agent/.changes/agents-view-anchor-open-block.md b/packages/coding-agent/.changes/agents-view-anchor-open-block.md deleted file mode 100644 index d754f3282..000000000 --- a/packages/coding-agent/.changes/agents-view-anchor-open-block.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed the agents view blocking Enter with "Waiting for the selected session to load" while the remembered selection was still loading; opening the visible row now always works, and entering a subagents view no longer arms that wait at all. diff --git a/packages/coding-agent/.changes/agents-view-model-everywhere.md b/packages/coding-agent/.changes/agents-view-model-everywhere.md deleted file mode 100644 index e545e9947..000000000 --- a/packages/coding-agent/.changes/agents-view-model-everywhere.md +++ /dev/null @@ -1 +0,0 @@ -- Changed the agents view to show the model label on every session row, not only on subagent rows. diff --git a/packages/coding-agent/.changes/async-bash-completion-message.md b/packages/coding-agent/.changes/async-bash-completion-message.md deleted file mode 100644 index 2eff0b940..000000000 --- a/packages/coding-agent/.changes/async-bash-completion-message.md +++ /dev/null @@ -1,2 +0,0 @@ -- Added steering Shell messages when background kernel `bash()` process groups finish so agents can inspect results at the next safe turn boundary without interrupting running tools. -- Kept sessions resident while background shell process groups run and completion delivery is pending. diff --git a/packages/coding-agent/.changes/compact-agents-view.md b/packages/coding-agent/.changes/compact-agents-view.md deleted file mode 100644 index 920001f09..000000000 --- a/packages/coding-agent/.changes/compact-agents-view.md +++ /dev/null @@ -1,2 +0,0 @@ -- Simplified the agents view with total cost and age, one column header, and collapsed inactive sessions while keeping the logo, startup metadata, and search. -- Kept a running-subagent count beneath collapsed agents while their subagents are working. diff --git a/packages/coding-agent/.changes/dead-kernel-memo.md b/packages/coding-agent/.changes/dead-kernel-memo.md deleted file mode 100644 index 0f67b1dda..000000000 --- a/packages/coding-agent/.changes/dead-kernel-memo.md +++ /dev/null @@ -1 +0,0 @@ -- A Python kernel that dies after a successful startup is restarted on the next use instead of every call being handed the dead kernel forever, and skill-MCP tools advertise their real input schemas again under mcp>=2 (the SDK renamed the field to input_schema). diff --git a/packages/coding-agent/.changes/feat-queue-path-arg-highlighting.md b/packages/coding-agent/.changes/feat-queue-path-arg-highlighting.md deleted file mode 100644 index 67da1a3d1..000000000 --- a/packages/coding-agent/.changes/feat-queue-path-arg-highlighting.md +++ /dev/null @@ -1 +0,0 @@ -- Highlighted `@path` file references and `--flags` in the editor, queued message previews, and sent user messages, plus the bare `--` end-of-options separator in recognized slash commands. diff --git a/packages/coding-agent/.changes/prime-inference-model-catalog.md b/packages/coding-agent/.changes/prime-inference-model-catalog.md deleted file mode 100644 index e8317479a..000000000 --- a/packages/coding-agent/.changes/prime-inference-model-catalog.md +++ /dev/null @@ -1 +0,0 @@ -- Added live refreshes for public and authorized private Prime Inference models while retaining bundled and cached fallbacks. diff --git a/packages/coding-agent/.changes/res-1256-rlm-root-session.md b/packages/coding-agent/.changes/res-1256-rlm-root-session.md deleted file mode 100644 index 793a1404e..000000000 --- a/packages/coding-agent/.changes/res-1256-rlm-root-session.md +++ /dev/null @@ -1,2 +0,0 @@ -- Added `rlm.create_session(...)` so daemon-backed root agents can start separate top-level sessions. -- Preserved active same-provider credentials when creating a sibling session without storing them in daemon descriptors. diff --git a/packages/coding-agent/.changes/res-1260-semantic-edges-on-event-log.md b/packages/coding-agent/.changes/res-1260-semantic-edges-on-event-log.md deleted file mode 100644 index 81ba62115..000000000 --- a/packages/coding-agent/.changes/res-1260-semantic-edges-on-event-log.md +++ /dev/null @@ -1 +0,0 @@ -- Moved the semantic-edge ledger's append and replay IO onto the shared event-log substrate. One behavior unified across both ledgers: an unterminated final line is an uncommitted append — skipped on read and truncated before the next append, never newline-completed. diff --git a/packages/coding-agent/.changes/res-1267-atomic-persistence.md b/packages/coding-agent/.changes/res-1267-atomic-persistence.md deleted file mode 100644 index 7f978f9a8..000000000 --- a/packages/coding-agent/.changes/res-1267-atomic-persistence.md +++ /dev/null @@ -1 +0,0 @@ -- Made every durable JSON/JSONL state write crash-safe through one shared atomic-write owner (temp file + rename, Windows rename retry): auth.json is no longer written in place (an interrupted write can no longer log you out everywhere), the auth migration writes its destination before destroying its sources, racing first-time settings writers no longer silently discard each other, and the kernel bootstrap lock can no longer be stolen mid-reclaim. Session files now repair crash damage (torn tails, zero-filled records) at open instead of silently losing the next message, and a session lease whose owner file is momentarily unreadable is no longer treated as stale and destroyed. diff --git a/packages/coding-agent/.changes/res-1268-windows-platform-seams.md b/packages/coding-agent/.changes/res-1268-windows-platform-seams.md deleted file mode 100644 index 70124486b..000000000 --- a/packages/coding-agent/.changes/res-1268-windows-platform-seams.md +++ /dev/null @@ -1,6 +0,0 @@ -- Fixed the Python kernel bootstrap on native Windows: the venv python now resolves under `Scripts\python.exe` (uv layout). ([Discussion #1401](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1401), [Discussion #1969](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1969)) -- Fixed `~/` and `~\` path expansion on Windows, including mixed-separator paths like `C:\Users\u/rest`. ([Discussion #1442](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1442), [Discussion #1469](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1469)) -- Fixed daemon worker handshakes timing out on slow machines: per-attempt hello/auth waits now consume the remaining connect budget instead of restarting a fixed 1s clock on every retry. ([Discussion #1622](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1622), [Discussion #1678](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1678)) -- Fixed console windows flashing on Windows: all background spawns now run with hidden windows. ([Discussion #1461](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1461)) -- Fixed bash resolution picking WSL's System32 `bash.exe` over a per-user Git Bash on PATH. ([Discussion #1437](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1437)) -- Fixed the built-in Herdr reporter never connecting on Windows by dialing the socket inside the named-pipe namespace. ([Discussion #1399](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1399)) diff --git a/packages/coding-agent/.changes/res-1271-auth-heuristics.md b/packages/coding-agent/.changes/res-1271-auth-heuristics.md deleted file mode 100644 index 7fbf6cbe9..000000000 --- a/packages/coding-agent/.changes/res-1271-auth-heuristics.md +++ /dev/null @@ -1,2 +0,0 @@ -- Removed error-message matching from stale-auth decisions; only structured authentication failures mark credentials stale. -- Added recovery from stale authentication through validated explicit model selection, while preserving cached private-model access only for the selected Prime team. diff --git a/packages/coding-agent/.changes/res-1271-retry-owner.md b/packages/coding-agent/.changes/res-1271-retry-owner.md deleted file mode 100644 index 6fa4e9370..000000000 --- a/packages/coding-agent/.changes/res-1271-retry-owner.md +++ /dev/null @@ -1,4 +0,0 @@ -- Changed auto-retry to honor provider Retry-After and usage-limit reset delays, capped by `retry.provider.maxRetryDelayMs`; longer requested waits fail immediately with an informative error instead of sleeping invisibly inside provider SDKs. -- Removed the `retry.provider.maxRetries` setting; provider SDKs no longer retry internally, so `retry.maxRetries` is the single retry knob. -- Changed structured `invalid_request`/`refusal` provider failures to fail immediately instead of being retried once. -- Added the shared retry policy to side questions, compaction and branch summarization, and refinement calls, which run outside the session auto-retry loop and would otherwise make exactly one attempt. diff --git a/packages/coding-agent/.changes/res-1272-coalesced-bookkeeping-appends.md b/packages/coding-agent/.changes/res-1272-coalesced-bookkeeping-appends.md deleted file mode 100644 index 0de98f3d5..000000000 --- a/packages/coding-agent/.changes/res-1272-coalesced-bookkeeping-appends.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed unbounded session-journal growth from derived bookkeeping: child usage attribution now flushes one entry per child turn instead of one per model request, and idle status sweeps no longer persist fabricated fallback verdicts, duplicate statuses, or retry failed summary generations (including paid model calls) every 25 seconds on unchanged content. diff --git a/packages/coding-agent/.changes/res-1272-incremental-session-scans.md b/packages/coding-agent/.changes/res-1272-incremental-session-scans.md deleted file mode 100644 index 661976567..000000000 --- a/packages/coding-agent/.changes/res-1272-incremental-session-scans.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed session-list refreshes re-reading entire session files on every change: metadata scans now resume from the last scanned byte offset, stop at the file size seen at scan start, and concurrent readers of the same session share one scan. diff --git a/packages/coding-agent/.changes/res-1272-memoized-passive-topology.md b/packages/coding-agent/.changes/res-1272-memoized-passive-topology.md deleted file mode 100644 index 07bab8ba1..000000000 --- a/packages/coding-agent/.changes/res-1272-memoized-passive-topology.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed daemon request latency on large agent trees: the passive-subagent topology is derived once and memoized, with every consumer (session list, snapshots, cron recovery, agent messaging, passivation) reading the cached walk until the spawn ledger, residency, or a child session file changes. diff --git a/packages/coding-agent/.changes/res-1315-worker-theme-init.md b/packages/coding-agent/.changes/res-1315-worker-theme-init.md deleted file mode 100644 index b6577d717..000000000 --- a/packages/coding-agent/.changes/res-1315-worker-theme-init.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed daemon session workers crashing when a hosted extension touched `ctx.ui.theme` (theme was never initialized in the worker process); workers now initialize the settings theme headlessly at startup, without a theme file watcher. diff --git a/packages/coding-agent/.changes/session-io-defects.md b/packages/coding-agent/.changes/session-io-defects.md deleted file mode 100644 index b9696bd4a..000000000 --- a/packages/coding-agent/.changes/session-io-defects.md +++ /dev/null @@ -1 +0,0 @@ -- Seven small correctness fixes: compaction keeps only the final turn when the budget is crossed inside trailing tool results (instead of silently keeping everything); a retry whose scheduled continue cannot run ends the retry instead of leaving the session stuck retrying; saved subagent sessions with a lost parent edge still display as subagents; tail truncation rescues an oversized final line even when output ends with a newline; a failed output-spill stream degrades to the in-memory tail instead of crashing the process; piped stdin and a CLI instruction are joined with a blank line instead of glued together; and frontmatter parses behind a UTF-8 BOM. diff --git a/packages/coding-agent/.changes/session-reader-safety.md b/packages/coding-agent/.changes/session-reader-safety.md deleted file mode 100644 index a2fa67ba1..000000000 --- a/packages/coding-agent/.changes/session-reader-safety.md +++ /dev/null @@ -1,2 +0,0 @@ -- Prevented session export and daemon-client startup from repairing or rewriting transcripts owned by another process. -- Enforced the retained session-scan usage cache limit for oversized transcripts. diff --git a/packages/coding-agent/.changes/session-relative-markdown-links.md b/packages/coding-agent/.changes/session-relative-markdown-links.md deleted file mode 100644 index 518dd3de4..000000000 --- a/packages/coding-agent/.changes/session-relative-markdown-links.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed assistant Markdown file links to open relative to the session's working directory, including Windows drive paths ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). diff --git a/packages/coding-agent/.changes/webp-exif-scan-termination.md b/packages/coding-agent/.changes/webp-exif-scan-termination.md deleted file mode 100644 index 8d3a06821..000000000 --- a/packages/coding-agent/.changes/webp-exif-scan-termination.md +++ /dev/null @@ -1 +0,0 @@ -- The WebP EXIF chunk scan reads chunk sizes as unsigned, so a crafted or corrupt image can no longer hang the process in an infinite scan loop. diff --git a/packages/coding-agent/.changes/windows-hardening-current-node.md b/packages/coding-agent/.changes/windows-hardening-current-node.md deleted file mode 100644 index 499d638e8..000000000 --- a/packages/coding-agent/.changes/windows-hardening-current-node.md +++ /dev/null @@ -1,2 +0,0 @@ -- Fixed Windows worker startup deadlines, session lease contention, and UTF-8 Python execution. -- Fixed deleted subagents returning in saved display state and duplicate cleanup failure notices. diff --git a/packages/coding-agent/.changes/worker-snapshot-cursor.md b/packages/coding-agent/.changes/worker-snapshot-cursor.md deleted file mode 100644 index 4af271765..000000000 --- a/packages/coding-agent/.changes/worker-snapshot-cursor.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed chunked session-snapshot transfers so the transfer id names the exact materialized snapshot cut, and a mismatched or restarted transfer now fails only that transfer (clients resync) instead of bouncing the whole worker channel. diff --git a/packages/coding-agent/.changes/worker-state-one-liveness-probe.md b/packages/coding-agent/.changes/worker-state-one-liveness-probe.md deleted file mode 100644 index d925e4368..000000000 --- a/packages/coding-agent/.changes/worker-state-one-liveness-probe.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed zombie processes being treated as live owners by the daemon supervisor ownership registry, session leases, supervisor launch locks, `daemon ps` process stops, and update-restart liveness checks; all process liveness probes now share the zombie-aware helper. diff --git a/packages/coding-agent/.changes/worker-state-recovery.md b/packages/coding-agent/.changes/worker-state-recovery.md deleted file mode 100644 index 4105a6fcd..000000000 --- a/packages/coding-agent/.changes/worker-state-recovery.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed daemon sessions bricking behind a terminal failed worker state: attach, create, and retry now re-run recovery for a failed worker whose process is verified alive, and a known-but-still-recovering session answers with a structured retryable error instead of "Unknown active session". diff --git a/packages/coding-agent/.changes/zai-default-model.md b/packages/coding-agent/.changes/zai-default-model.md deleted file mode 100644 index 3afdf4bb1..000000000 --- a/packages/coding-agent/.changes/zai-default-model.md +++ /dev/null @@ -1 +0,0 @@ -- The zai provider default model now points at glm-5.3; the previous default was removed from the catalog and silently fell back to a template model. diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index b99ffc556..e9561e32c 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -1,5 +1,48 @@ # Changelog +## [0.9.4] - 2026-09-08 + +- A Python kernel that dies after a successful startup is restarted on the next use instead of every call being handed the dead kernel forever, and skill-MCP tools advertise their real input schemas again under mcp>=2 (the SDK renamed the field to input_schema). +- Moved the semantic-edge ledger's append and replay IO onto the shared event-log substrate. One behavior unified across both ledgers: an unterminated final line is an uncommitted append — skipped on read and truncated before the next append, never newline-completed. +- Made every durable JSON/JSONL state write crash-safe through one shared atomic-write owner (temp file + rename, Windows rename retry): auth.json is no longer written in place (an interrupted write can no longer log you out everywhere), the auth migration writes its destination before destroying its sources, racing first-time settings writers no longer silently discard each other, and the kernel bootstrap lock can no longer be stolen mid-reclaim. Session files now repair crash damage (torn tails, zero-filled records) at open instead of silently losing the next message, and a session lease whose owner file is momentarily unreadable is no longer treated as stale and destroyed. +- Fixed unbounded session-journal growth from derived bookkeeping: child usage attribution now flushes one entry per child turn instead of one per model request, and idle status sweeps no longer persist fabricated fallback verdicts, duplicate statuses, or retry failed summary generations (including paid model calls) every 25 seconds on unchanged content. +- Fixed session-list refreshes re-reading entire session files on every change: metadata scans now resume from the last scanned byte offset, stop at the file size seen at scan start, and concurrent readers of the same session share one scan. +- Fixed daemon request latency on large agent trees: the passive-subagent topology is derived once and memoized, with every consumer (session list, snapshots, cron recovery, agent messaging, passivation) reading the cached walk until the spawn ledger, residency, or a child session file changes. +- Seven small correctness fixes: compaction keeps only the final turn when the budget is crossed inside trailing tool results (instead of silently keeping everything); a retry whose scheduled continue cannot run ends the retry instead of leaving the session stuck retrying; saved subagent sessions with a lost parent edge still display as subagents; tail truncation rescues an oversized final line even when output ends with a newline; a failed output-spill stream degrades to the in-memory tail instead of crashing the process; piped stdin and a CLI instruction are joined with a blank line instead of glued together; and frontmatter parses behind a UTF-8 BOM. +- Prevented session export and daemon-client startup from repairing or rewriting transcripts owned by another process. +- Enforced the retained session-scan usage cache limit for oversized transcripts. +- The WebP EXIF chunk scan reads chunk sizes as unsigned, so a crafted or corrupt image can no longer hang the process in an infinite scan loop. +- Fixed chunked session-snapshot transfers so the transfer id names the exact materialized snapshot cut, and a mismatched or restarted transfer now fails only that transfer (clients resync) instead of bouncing the whole worker channel. +- Fixed zombie processes being treated as live owners by the daemon supervisor ownership registry, session leases, supervisor launch locks, `daemon ps` process stops, and update-restart liveness checks; all process liveness probes now share the zombie-aware helper. +- Fixed daemon sessions bricking behind a terminal failed worker state: attach, create, and retry now re-run recovery for a failed worker whose process is verified alive, and a known-but-still-recovering session answers with a structured retryable error instead of "Unknown active session". +- The zai provider default model now points at glm-5.3; the previous default was removed from the catalog and silently fell back to a template model. +- Removed error-message matching from stale-auth decisions; only structured authentication failures mark credentials stale. +- Added recovery from stale authentication through validated explicit model selection, while preserving cached private-model access only for the selected Prime team. +- Changed auto-retry to honor provider Retry-After and usage-limit reset delays, capped by `retry.provider.maxRetryDelayMs`; longer requested waits fail immediately with an informative error instead of sleeping invisibly inside provider SDKs. +- Removed the `retry.provider.maxRetries` setting; provider SDKs no longer retry internally, so `retry.maxRetries` is the single retry knob. +- Changed structured `invalid_request`/`refusal` provider failures to fail immediately instead of being retried once. +- Added the shared retry policy to side questions, compaction and branch summarization, and refinement calls, which run outside the session auto-retry loop and would otherwise make exactly one attempt. +- Fixed the Python kernel bootstrap on native Windows: the venv python now resolves under `Scripts\python.exe` (uv layout). ([Discussion #1401](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1401), [Discussion #1969](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1969)) +- Fixed `~/` and `~\` path expansion on Windows, including mixed-separator paths like `C:\Users\u/rest`. ([Discussion #1442](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1442), [Discussion #1469](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1469)) +- Fixed daemon worker handshakes timing out on slow machines: per-attempt hello/auth waits now consume the remaining connect budget instead of restarting a fixed 1s clock on every retry. ([Discussion #1622](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1622), [Discussion #1678](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1678)) +- Fixed console windows flashing on Windows: all background spawns now run with hidden windows. ([Discussion #1461](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1461)) +- Fixed bash resolution picking WSL's System32 `bash.exe` over a per-user Git Bash on PATH. ([Discussion #1437](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1437)) +- Fixed the built-in Herdr reporter never connecting on Windows by dialing the socket inside the named-pipe namespace. ([Discussion #1399](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1399)) +- Fixed Windows worker startup deadlines, session lease contention, and UTF-8 Python execution. +- Fixed deleted subagents returning in saved display state and duplicate cleanup failure notices. +- Fixed the agents view blocking Enter with "Waiting for the selected session to load" while the remembered selection was still loading; opening the visible row now always works, and entering a subagents view no longer arms that wait at all. +- Changed the agents view to show the model label on every session row, not only on subagent rows. +- Added steering Shell messages when background kernel `bash()` process groups finish so agents can inspect results at the next safe turn boundary without interrupting running tools. +- Kept sessions resident while background shell process groups run and completion delivery is pending. +- Simplified the agents view with total cost and age, one column header, and collapsed inactive sessions while keeping the logo, startup metadata, and search. +- Kept a running-subagent count beneath collapsed agents while their subagents are working. +- Highlighted `@path` file references and `--flags` in the editor, queued message previews, and sent user messages, plus the bare `--` end-of-options separator in recognized slash commands. +- Added live refreshes for public and authorized private Prime Inference models while retaining bundled and cached fallbacks. +- Added `rlm.create_session(...)` so daemon-backed root agents can start separate top-level sessions. +- Preserved active same-provider credentials when creating a sibling session without storing them in daemon descriptors. +- Fixed daemon session workers crashing when a hosted extension touched `ctx.ui.theme` (theme was never initialized in the worker process); workers now initialize the settings theme headlessly at startup, without a theme file watcher. +- Fixed assistant Markdown file links to open relative to the session's working directory, including Windows drive paths ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). + ## [0.9.3] - 2026-09-06 - Fixed ChatGPT OAuth model discovery hiding GPT-6 Astra by advertising Codex CLI 0.153.4 instead of 0.147.0. diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 87a36a687..15593eb42 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-coding-agent", - "version": "0.9.3", + "version": "0.9.4", "description": "Coding agent CLI with a persistent Python REPL kernel and session management", "type": "module", "piConfig": { @@ -48,9 +48,9 @@ }, "dependencies": { "@agentclientprotocol/sdk": "^1.3.0", - "@earendil-works/pi-agent-core": "^0.9.3", - "@earendil-works/pi-ai": "^0.9.3", - "@earendil-works/pi-tui": "^0.9.3", + "@earendil-works/pi-agent-core": "^0.9.4", + "@earendil-works/pi-ai": "^0.9.4", + "@earendil-works/pi-tui": "^0.9.4", "@silvia-odwyer/photon-node": "^0.3.4", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", diff --git a/packages/tui/.changes/feat-queue-path-arg-highlighting.md b/packages/tui/.changes/feat-queue-path-arg-highlighting.md deleted file mode 100644 index b38135b80..000000000 --- a/packages/tui/.changes/feat-queue-path-arg-highlighting.md +++ /dev/null @@ -1 +0,0 @@ -- Added source-line coordinates to editor layout lines and `styleDisplayText()` so subclasses can style wrapped or scrolled text against exact source offsets. diff --git a/packages/tui/.changes/local-file-links.md b/packages/tui/.changes/local-file-links.md deleted file mode 100644 index c6f3817d5..000000000 --- a/packages/tui/.changes/local-file-links.md +++ /dev/null @@ -1 +0,0 @@ -- Added support for opening file links from the fullscreen terminal UI. diff --git a/packages/tui/.changes/res-1268-windows-platform-seams.md b/packages/tui/.changes/res-1268-windows-platform-seams.md deleted file mode 100644 index c144f7208..000000000 --- a/packages/tui/.changes/res-1268-windows-platform-seams.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed console windows flashing on Windows from background path-completion and open-link spawns. ([Discussion #1461](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1461)) diff --git a/packages/tui/.changes/selection-marker-lone-surrogates.md b/packages/tui/.changes/selection-marker-lone-surrogates.md deleted file mode 100644 index 66904d23b..000000000 --- a/packages/tui/.changes/selection-marker-lone-surrogates.md +++ /dev/null @@ -1 +0,0 @@ -- Table cell selection markers no longer crash the renderer when cell content contains a lone UTF-16 surrogate; the surrogate is replaced before encoding. diff --git a/packages/tui/.changes/session-relative-markdown-links.md b/packages/tui/.changes/session-relative-markdown-links.md deleted file mode 100644 index c18b5d39d..000000000 --- a/packages/tui/.changes/session-relative-markdown-links.md +++ /dev/null @@ -1,2 +0,0 @@ -- Added a base URL option for resolving relative Markdown links ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). -- Fixed Windows drive paths in Markdown links to open as file URLs ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). diff --git a/packages/tui/.changes/windows-hardening-current-node.md b/packages/tui/.changes/windows-hardening-current-node.md deleted file mode 100644 index e14fbf913..000000000 --- a/packages/tui/.changes/windows-hardening-current-node.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed raw multiline terminal paste being handled as separate key events. diff --git a/packages/tui/CHANGELOG.md b/packages/tui/CHANGELOG.md index c81ed04cd..b492ce7eb 100644 --- a/packages/tui/CHANGELOG.md +++ b/packages/tui/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.9.4] - 2026-09-08 + +- Table cell selection markers no longer crash the renderer when cell content contains a lone UTF-16 surrogate; the surrogate is replaced before encoding. +- Fixed console windows flashing on Windows from background path-completion and open-link spawns. ([Discussion #1461](https://github.com/PrimeIntellect-ai/prime-agent/discussions/1461)) +- Fixed raw multiline terminal paste being handled as separate key events. +- Added source-line coordinates to editor layout lines and `styleDisplayText()` so subclasses can style wrapped or scrolled text against exact source offsets. +- Added support for opening file links from the fullscreen terminal UI. +- Added a base URL option for resolving relative Markdown links ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). +- Fixed Windows drive paths in Markdown links to open as file URLs ([#2108](https://github.com/PrimeIntellect-ai/prime-agent/issues/2108)). + ## [0.9.0] - 2026-09-01 - Add an optional `transform` hook to `Markdown` so callers can rewrite markdown with the exact content width before rendering. diff --git a/packages/tui/package.json b/packages/tui/package.json index f2f37f372..15f66bb05 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-tui", - "version": "0.9.3", + "version": "0.9.4", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js",