Commit Graph
7193 Commits
Author SHA1 Message Date
roboomp 83496b8211 fix(coding-agent): returned ToolInfo[] from getAllTools extension API
The ExtensionAPI getAllTools() wired to session.getAllToolNames(),
returning bare tool-name strings. Upstream @earendil-works/pi-coding-agent
promises ToolInfo[] with sourceInfo, so extensions loaded through the
legacy-pi shim (e.g. gentle-pi) crashed on t.sourceInfo.source at every
session start.

Added SourceInfo/ToolInfo types plus SessionTools.getAllToolInfos(), which
returns { name, description, parameters, sourceInfo } and classifies each
tool as builtin/mcp/sdk/extension. Rewired every getAllTools action site
(interactive, acp, print/rpc, subagent executor) and the example extension.

Fixes #7732
2026-08-05 15:42:06 +00:00
roboomp 31ee049374 fix(plugins): resolve createRequire deps in legacy-pi shim
The legacy-pi load-time rewriter only recognized static require()/import
specifiers, so an extension resolving a bundled dependency through the
createRequire(base)(spec) factory form (e.g. gentle-pi loading
@heyhuynhgiabuu/pi-pretty) left the bare specifier untouched. In a
compiled binary that argument then fell through to native node_modules
resolution, which is unavailable under --compile, failing extension
validation and session load.

collectExtensionSpecifierReferences now detects createRequire(...)(spec)
factory invocations and records the invoked bare specifier as a require
reference, so the existing pipeline pins it to an absolute path. Relative
specifiers are left alone since they resolve against the createRequire
base, which is not rewritten.

Fixes #7728
2026-08-05 15:02:07 +00:00
metaphorics 29a72eb939 test: fix Windows portability of bash ACP, warp capabilities, and logger closure tests 2026-08-05 11:43:19 +00:00
metaphorics 7c8f6249ed fix(coding-agent): build WSL mount fallback paths with POSIX semantics 2026-08-05 11:43:02 +00:00
metaphorics e9ee424ded fix(coding-agent): preserve POSIX editor quoting 2026-08-05 11:42:28 +00:00
can1357 e9888367d1 refactor: migrated packages to internal utility modules and removed external dependencies
- Implemented in-house, zero-dependency utility modules in `pi-utils` covering DOM manipulation, markdown parsing, templating, browser automation helpers, and terminal buffers.
- Migrated packages across the repository to consume the new internal utilities and `omptype` schema validators instead of external dependencies.
- Removed multiple external runtime and development dependencies including Zod, Marked, LRU cache, Turndown, and Puppeteer browser packages.
2026-08-05 13:39:09 +02:00
metaphorics e1a7c17c2b fix(coding-agent): bound browser version probes 2026-08-05 11:10:20 +00:00
metaphorics 64f2639d61 fix(coding-agent): fall back to xsel for Linux clipboard 2026-08-05 10:51:01 +00:00
metaphorics ecb22957cf fix(coding-agent): validate Linux browser executables 2026-08-05 10:50:31 +00:00
brymko 9e898fa185 fix(coding-agent): cancelled stale mcp oauth reauthorization
Repeated /mcp reauth commands could remain blocked by a prior
unfinished login because each command receives a fresh controller.
Coordinate flows through session-shared state so a replacement cancels
and cleans up the old flow before proceeding.
2026-08-05 18:46:49 +08:00
metaphorics d2126b94f4 perf(extensions): import extension modules concurrently
Extension loading iterated paths with await in a for...of loop, so each
module import (file I/O + module evaluation, the dominant cold-start
cost) blocked the next. Split loadExtension into a concurrent import
phase (Promise.all) and a sequential factory-binding phase that runs in
the original path order, keeping registration semantics (last-wins
collisions, shared runtime flag defaults) deterministic and per-extension
error isolation intact.

Fixes #7615
2026-08-05 10:43:18 +00:00
metaphorics 85177a29ec fix(coding-agent): fail loudly when no POSIX bash exists; add stdin-isolation regression test 2026-08-05 10:42:36 +00:00
Can BölükandGitHub 1e492d6ff9 Merge pull request #7354 from brymko/fix/browser-timeout-crash-recovery
Fix/browser timeout crash recovery
2026-08-05 12:39:14 +02:00
metaphorics f03581dc22 fix(coding-agent): stop eval shell children inheriting the runner control channel; resolve Git Bash on Windows 2026-08-05 10:24:24 +00:00
enieuwy b279f06849 fix(task): inherit the aliased role's retry fallback chain for subagents
A single-model subagent has no fallbacks of its own, so it inherits one
and is pinned to a `subagent:<id>` role. That pin is inserted first in
`retry.fallbackChains` so no other role can capture its routing — which
also means it shadows every configured role chain at runtime.

Inheritance was hardcoded to `chains.default`, so a subagent spawned
through a role alias (the bundled scout's `model: "@smol"`) retried on
the default role's chain instead of its own. With `smol` chained to
composer/grok/luna and `default` chained to gpt-5.6-sol, every scout
fell back onto sol.

Resolve the inherited chain from the role identity still present in the
raw pattern (`@smol` -> `smol`), falling back to `default` when that
role configures no chain. An explicitly empty role chain still means
"no fallbacks", mirroring `expandDefaultRetryFallbackChains`. Explicit
model selectors keep inheriting `default`: they carry no role identity,
and a role assigned the same model must not capture the child's routing.
2026-08-05 18:13:42 +08:00
brymko 271e621a02 test(coding-agent): synchronized browser rejection checks
Waited for the observable warning event instead of assuming late continuations settle within a fixed wall-clock delay under CI load.
2026-08-05 17:47:03 +08:00
roboomp a785811a64 fix(tui): detach plan approval dispatch from serialized event chain
After the fullscreen Plan Review closed on approve-and-execute, the
conversation view stayed blank while the plan ran. The propose write's
tool_execution_end handler runs inside EventController's serialized
dispatch chain and awaited handlePlanApproval, which awaits session.prompt
for the entire execution turn, so every later agent_start/message_start/
tool/message_update event queued behind it until the run finished.

Detach the approval dispatch so the dispatch link settles immediately and
the execution turn's events render live. Follow-up to #5688, which only
moved the overlay close before the still-blocking dispatch.

Fixes #7684
2026-08-05 09:18:12 +00:00
brymko fe086df7bf fix(coding-agent): aborted browser runs before draining
Closed worker and cmux run signals before yielding for floating-rejection drainage. Stale promise continuations can no longer begin page navigation after evaluated code returns.
2026-08-05 16:45:36 +08:00
brymko a51b69ee85 fix(coding-agent): kept unrelated worker failures fatal
Classified only marked browser failures and evaluated-run stack frames as run-owned rejections. Unrelated tab-worker failures now remain on the worker guard's fatal path.
2026-08-05 16:44:41 +08:00
brymko 5c0187dec5 fix(coding-agent): isolated promise combinator tracking
Used a run-scoped Promise subclass instead of mutating native combinator methods. Evaluated code can now freeze its Promise constructor without breaking cleanup or later browser runs.
2026-08-05 16:43:00 +08:00
brymko af35be1105 fix(coding-agent): tracked browser promise combinators
Observed Promise.all and Promise.race results derived from browser calls during each evaluated run. User catch continuations that rethrow browser failures now fail the owning run without changing native await behavior.
2026-08-05 16:43:00 +08:00
brymko bb5d64557d fix(coding-agent): preserved late browser rejections
Logged late user continuation failures in cmux runs and delayed worker rejection folding until request-interception cleanup completed. This closes both windows where missing awaits could be silently dropped.
2026-08-05 15:46:38 +08:00
brymko dd0b7b3176 fix(coding-agent): reported late browser continuations
Logged user continuation rejections that settle after their browser run has ended. This preserves the completed result while making missing awaits visible instead of silently dropping them.
2026-08-05 15:46:38 +08:00
brymko 71c26e5958 fix(coding-agent): reported rethrown browser continuations
Tracked whether user continuation callbacks create each descendant rejection. Browser errors that user code rethrows now fail the owning run instead of being contained as propagated helper failures.
2026-08-05 15:45:17 +08:00
brymko 2fd469de75 fix(coding-agent): corrected browser rejection containment
Scoped browser-error markers to each run and contained only propagated browser failures. Routed floated user continuations into failed runs and added worker coverage for native await plus every continuation method.
2026-08-05 15:45:17 +08:00
Can BölükandGitHub 06477855d1 Merge pull request #7551 from kmccleary3301/refactor/agent-hub-fullscreen
refactor(coding-agent): polish fullscreen Agent Hub
2026-08-05 09:20:39 +02:00
David Andrews dff7f8271a fix(coding-agent): stringify preview env values
(cherry picked from commit 2d852c0632116f227b772dbbb646169971bd9398)
2026-08-05 03:07:27 -04:00
brymko 364e13c49e fix(coding-agent): contained browser timeout rejections
Observed every browser facade continuation so fire-and-forget helper
timeouts cannot wedge or kill a tab worker. Preserved native Promise
identity for callers and test matchers.
2026-08-05 14:31:03 +08:00
roboomp 338451ffdb fix(session): migrate hashed session dirs back to legacy names
The 17.2.9 revert (172ce9b) restored the legacy path-based session
directory names but removed all migration, including the reverse path.
Sessions written under the short-lived hashed scheme (17.2.5-17.2.8,
`<scope>-<readable>-<sha256>`) were left orphaned, so `omp -r`
current-folder scope reported no sessions.

computeDefaultSessionDir now reconstructs the hashed dir name for the
cwd and performs a one-way best-effort migration into the legacy name,
alongside the existing legacy-absolute migration.

Fixes #7677
2026-08-05 06:22:22 +00:00
roboomp 619412c987 fix(memory): hid disabled memory protocol
Made the Read schema session-aware and rejected memory URLs when the calling session has memory disabled.

Fixes #7673
2026-08-05 04:07:40 +00:00
roboomp 22d02031d9 fix(web-search): kept GPT-5.6 hosted tools top-level
Codex Responses-Lite moves web_search into additional_tools, which the hosted backend ignores. Keep the classic top-level tools contract for all dedicated Codex web searches and cover GPT-5.6 request shape.

Fixes #7666
2026-08-05 02:02:35 +00:00
Kyle McCleary 0a0eca3834 fix(coding-agent): preserve override role provenance 2026-08-04 18:32:06 -07:00
jamesarch d6ab7291d1 fix(model-hub): separate status glyph from role label
Under the `nerd` symbol preset, `status.enabled` and `status.shadowed` are
Nerd Font private-use icons (U+F111 / U+F10C). Those glyphs are drawn two
cells wide, but `visibleWidth` counts them as one: `tui/utils.ts` pins
`ambiguousIsNarrow: true`, and the PUA block is East_Asian_Width=Ambiguous.

With no separator the icon overhangs into the next cell and swallows the
label's first character, so the role chips in the model browser and model
hub render as `efault` / `ision` / `lan` / `ask` / `dvisor` instead of
`default` / `vision` / `plan` / `task` / `advisor`.

The adjacent `status.success` check on the very same line already carries a
leading space and renders correctly, which isolates the missing separator
as the cause rather than the glyph itself.

Role-chip assertions in test/model-hub.test.ts are updated for the new
spacing, and the change is recorded under CHANGELOG `[Unreleased]`.

Constraint: lint
Confidence: high
Scope-risk: low
2026-08-05 09:31:52 +08:00
Kyle McCleary 5cc4f5c93a Merge main into refactor/agent-hub-fullscreen 2026-08-04 18:15:42 -07:00
can1357 b0a94a8fc0 chore: cleanup 2026-08-05 03:07:16 +02:00
can1357 b361bbde20 chore(changelog): normalized unreleased entries 2026-08-05 02:56:52 +02:00
can1357 e9c5bc9130 fix(browser): preserve Chromium detection precedence
(cherry picked from commit 028c4d3588879306ab208a1e0b5c913a1004651f)
2026-08-05 02:40:45 +02:00
can1357 b2fe308ecf Merge PR #7515: feat(browser): auto-detect Ungoogled Chromium on Linux (@Mustaqeem66)
# Conflicts:
#	packages/coding-agent/test/tools/browser-launch.test.ts
2026-08-05 02:40:28 +02:00
can1357 c457037816 test(coding-agent): cover bounded Vibe suspension
(cherry picked from commit 30fd0cc7bbcb427c9ae7a8ef6b801545c6aa1c5b)
2026-08-05 02:32:36 +02:00
can1357 5ed9ffadce fix(agent): resolve WSL host profile through interop
(cherry picked from commit bd06a333e30510c71ca1bd2a55f79e87227a829b)
2026-08-05 02:32:36 +02:00
roboompandcan1357 fe9bd27fc9 fix(agent): loaded WSL host agents skills
Scanned the Windows host USERPROFILE .agents directory when running under WSL so globally installed Agent Skills are available alongside Linux-home skills.

Fixes #3779

(cherry picked from commit c3468dae4f9b91646bf50f2cf4ded9075572290e)
2026-08-05 02:32:36 +02:00
roboompandcan1357 99748bbe61 fix(ai): omitted codex optional response defaults
Stopped OpenAI Codex requests from sending reasoning.summary, reasoning.context, and text.verbosity unless explicitly configured, matching the safer native Codex request shape for GPT-5.x models.

Preserved explicit overrides and added regression coverage for transformer and settings-aware stream behavior.

Fixes #4949

(cherry picked from commit 15d86667d6572faf453e74b922eed33dd2d3f3c9)
2026-08-05 02:32:36 +02:00
can1357 a6eafcbf6b fix(ai): keep concurrency caps out of auth rotation
(cherry picked from commit bd6285ad9b16ae6f0a75e336a1c4bf961d3e43c7)
2026-08-05 02:32:36 +02:00
metaphoricsandcan1357 e322f28fcc fix(ai): exclude concurrency caps from 403 rotation and test the Copilot gate
403 concurrency caps bypass credential rotation in stream and auth-retry paths; snake-case concurrency codes classify; a session-level test covers the Copilot credential-removal gate.

(cherry picked from commit aca348e797ed987750a14ecf625952b6b971f7a5)
2026-08-05 02:32:35 +02:00
can1357 6c84b152ad Merge PR #7663: fix(lsp): normalize published diagnostic URI keys (@roboomp) 2026-08-05 02:32:34 +02:00
Kyle McCleary 5b68e99796 Merge main into refactor/agent-hub-fullscreen 2026-08-04 17:23:50 -07:00
Kyle McCleary 3180fd3d7f fix(coding-agent): complete Agent Hub inspector metadata 2026-08-04 17:20:00 -07:00
roboomp 8b120cecc5 fix(lsp): normalized published diagnostic uri keys
Canonicalized file URI keys at the diagnostics map boundary so server and client spellings match across percent encoding and Windows casing.

Added regression coverage for equivalent percent-encoded URIs and the marksman Windows drive-letter form.

Fixes #7662
2026-08-04 23:53:08 +00:00
Kyle McCleary 8e5f619502 fix(coding-agent): harden Agent Hub lifecycle and persistence 2026-08-04 16:29:15 -07:00
can1357 ece9245a0a style: applied biome formatting to merged changes 2026-08-05 01:15:59 +02:00