Commit Graph

11772 Commits

Author SHA1 Message Date
can1357 46c66ac03a fix(setup): always resolve interpreter during setup probe 2026-08-02 20:53:34 +02:00
can1357 46f780fedd Merge PR #7390: fix(setup): align Python setup probe with eval (@paolofraz) 2026-08-02 20:53:34 +02:00
can1357 83e23a58e6 Merge PR #7387: fix(tui): keep working title across non-terminal agent_end (@roboomp) 2026-08-02 20:53:22 +02:00
can1357 81babef622 fix(coding-agent): avoid redundant faint sequence in status cap 2026-08-02 20:53:22 +02:00
can1357 7f20bafc03 Merge PR #7385: fix(coding-agent): keep focused status bar caps bright (@art-wiedzmin) 2026-08-02 20:53:21 +02:00
can1357 9b7b193f8f Merge PR #7384: test(browser): stop gating chromium tests on a top-level-await export (@paralin) 2026-08-02 20:53:21 +02:00
can1357 ca2385b0ec Merge PR #7382: fix(cli): restore piped custom session persistence (@roboomp) 2026-08-02 20:53:21 +02:00
can1357 2b4c33569b Merge PR #7367: fix(mnemopi): surface scoped recall failures (@roboomp) 2026-08-02 20:53:21 +02:00
can1357 3f61117994 Merge PR #7362: fix(auth): guard config-value resolvers against case-insensitive env hijack (@roboomp) 2026-08-02 20:53:20 +02:00
can1357 bdc2072440 Merge PR #7356: fix(mnemopi): bound embed worker IPC and reap on timeout (@roboomp) 2026-08-02 20:53:20 +02:00
can1357 51b71c098b test(mnemopi): exercise locked shared-bank flush 2026-08-02 20:53:20 +02:00
can1357 221d91d4ae Merge PR #7355: fix(mnemopi): bound locked retention during teardown (@roboomp) 2026-08-02 20:53:20 +02:00
can1357 d8881e3fd6 Merge PR #7350: fix(eval): preserve console for ConPTY Python kernels (@roboomp) 2026-08-02 20:53:19 +02:00
can1357 160bdd05c3 fix(agent): keep session scout notices live 2026-08-02 20:52:57 +02:00
can1357 3de8c3a476 Merge PR #7344: fix(agent): stop leaking scout into prompts when it is disabled (@szavadsky)
# Conflicts:
#	packages/coding-agent/src/prompts/system/system-prompt.md
2026-08-02 20:52:56 +02:00
can1357 4beae19ca8 Merge PR #7340: test(vibe): fix kill-before-init race with a worker-ready handshake (@szavadsky) 2026-08-02 20:52:14 +02:00
can1357 abebe8c2a8 Merge PR #7333: fix(tui): compact linear branch continuations (@roboomp) 2026-08-02 20:52:07 +02:00
can1357 3b118015e5 Merge PR #7331: fix(tui): preserve loop after cancelling iteration (@roboomp) 2026-08-02 20:52:07 +02:00
can1357 6e4a0e8125 Merge PR #7327: fix(compaction): stop shake from re-eliding artifact recovery reads (@jwmacd) 2026-08-02 20:52:07 +02:00
can1357 7d6eb47314 feat: implemented ps shell builtin with sorting and formatting options
- Added the `ps` shell builtin with BSD and procps selection forms, custom formatting, and sorting capabilities.
- Implemented the `sanitize_process_command` helper to clean process command names and arguments.
- Updated the bash prompt template and package changelogs to document the new builtin.
2026-08-02 20:40:19 +02:00
can1357 a872d77068 chore: cleanup dumb tests 2026-08-02 20:39:23 +02:00
can1357 212f0b1e00 feat(coding-agent/config): supported custom timeout configuration for model discovery
- Added an optional `timeoutMs` property to the provider discovery configuration schema with validation.
- Passed custom discovery timeout values through model discovery and metadata probing functions.

Fixes #6952
2026-08-02 20:32:31 +02:00
can1357 d0c13aab3e fix(pi-natives/desktop): corrected macos accessibility and input routing
- Refused background keyboard delivery for multi-window macOS applications to prevent ambiguous keystroke routing.
- Set `AXMain` and `AXFocused` attributes during foreground macOS input delivery to ensure proper window activation.
- Activated Chromium renderer accessibility trees lazily during window snapshots to avoid capturing only browser chrome.
- Used `AXDescription` as a fallback title for unnamed macOS accessibility controls in snapshots and queries.
2026-08-02 20:29:57 +02:00
can1357 a6ca9e84e0 feat(coding-agent/prompts): refined system prompt instructions and constraints
- Update tool usage, exploration, delegation, and execution workflow guidelines in the system prompt.
- Tighten constraints on completion, completeness, evidence output, and yielding behaviors.
2026-08-02 19:46:56 +02:00
can1357 ef852af986 feat(computer): implemented modular desktop backend and script workflows
- Replaced monolithic desktop native bindings and action batching with a modular cross-platform backend structure supporting Wayland, X11, macOS, and Win32.
- Updated the computer tool schema and supervisor to execute persistent JavaScript script runs with timeout clamping and asynchronous tool calling.
- Integrated accessibility (AX) tree snapshotting, node querying, and bounds-based hit testing across platform desktop layers.
- Added native clipboard bindings and updated coding-agent prompts, renderers, and tests to validate script-based computer workflows.
2026-08-02 19:46:25 +02:00
can1357 92b50faacc feat(coding-agent/lsp): implemented lsp multiplexer server and shared daemon lifecycle
- Added an LSP multiplexer server, protocol definitions, and daemon lifecycle management to route traffic across sessions.
- Introduced `lsp.shared` settings configuration and SDK session creation support for shared language servers.
- Migrated shared daemon ensure helpers into a central launch module with updated import references.
- Added comprehensive unit tests and fake LSP server fixtures covering muxing, sharing, caching, and restarts.
2026-08-02 18:15:22 +02:00
can1357 4a946e2cfc fix(coding-agent/tools): serialized tab grouping operations in the relay bridge
- Serialized group and ungroup operations to prevent duplicate tab group creation races.
- Queued and serially drained tab grouping requests in the relay bridge to prevent overlapping RPCs.
- Mirrored tab group titles to session storage and healed duplicate groups during background service worker recovery.
- Renamed run-cancellation utility to run-scope and updated corresponding module and test references.
2026-08-02 18:07:07 +02:00
can1357 7c3b24ddf2 feat: implemented cross-platform window discovery and targeting capabilities
- Added window discovery, targeting, and frame validation for macOS, Windows, and Linux platforms.
- Updated computer tool and protocol definitions to support listing and targeting specific application windows.
- Refactored native computer tool exposure to function-only representation across models.
- Updated documentation and test suites to reflect window-scoped computer control capabilities.
2026-08-02 17:35:29 +02:00
Paolo Frazzetto 24ecd0269c fix(setup): align Python setup probe with eval 2026-08-02 14:55:52 +02:00
roboomp 84135e9fed fix(tui): flush deferred model switch on non-terminal settle
The isTerminal:false early-return skipped #finishAgentEnd, the only site
that flushes a deferred plan-mode model switch, so an automatic continuation
(async wake) ran on the old model/thinking level until the terminal settle.
Flush the pending switch on the non-terminal branch before returning; the
title/loader teardown stays deferred to the terminal agent_end.
2026-08-02 12:24:01 +00:00
roboomp 4e4c5564c9 fix(tui): keep working title across non-terminal agent_end
EventController.#handleAgentEnd guarded only on session.isStreaming, so a
non-terminal agent_end (isTerminal:false, emitted while an async job will
re-wake the loop) flipped the terminal title to idle and tore down the
working loader while a /vibe worker or async bash job was still running.

Early-return on event.isTerminal === false, matching the guard every other
agent_end consumer already applies; the later terminal agent_end performs
the normal teardown.

Fixes #7386
2026-08-02 12:18:08 +00:00
Christian Stewart 78a4d2ea5a test(browser): stop gating chromium tests on a top-level-await export
`bun test` fails the coding-agent native/unit job with

  ReferenceError: Cannot access 'CHROMIUM_AVAILABLE' before initialization

in test/tools/browser-attach.test.ts and browser-tab-evaluate.test.ts,
taking the job red on every pull request.

chromium-probe.ts initializes its only export with top-level await. When
a test file importing it is the first file the runner loads, the await
settles before that file evaluates and the binding reads fine. When any
other test file was loaded first, the importer's body runs while the
binding is still in its temporal dead zone, and registration throws at
the `skipIf` call. `bun test <one file>` passes and `bun test --parallel=1
<any earlier file> <that file>` fails, which is why the job fails while a
single-file run does not.

Export the memoized probe as a function and let each test file await it
during its own evaluation, which the runner sequences. The probe still
runs once per process and resolves the executable exactly as before.

Signed-off-by: Christian Stewart <christian@aperture.us>
2026-08-02 05:00:26 -07:00
art-wiedzmin 6f6d298e6e fix(coding-agent): keep focused status caps bright 2026-08-02 14:55:13 +03:00
roboomp 72d8d4eaca fix(cli): restored piped session persistence
- Treated undefined stdin TTY state as redirected input.

- Honored PI_CODING_AGENT_SESSION_DIR with CLI precedence.

Fixes #7378
2026-08-02 11:33:58 +00:00
roboomp e82aa25590 fix(mnemopi): contained auto-recall failures
- Caught all-target recall failures inside the fire-and-forget auto-recall path.
- Kept first-turn recall eligible for retry after an engine failure.
- Added regression coverage for the background failure contract.
2026-08-02 09:18:09 +00:00
roboomp d99adc9325 fix(mnemopi): surfaced scoped recall failures
- Warned when a scoped recall target fails while preserving partial results from healthy targets.
- Re-threw the underlying failure when every target fails so recall cannot masquerade as an empty search.
- Added tool-level regression coverage for total and partial scoped failures.

Fixes #7364
2026-08-02 09:11:36 +00:00
jwmacd 7428146556 review: changelog entries; note manual /shake intent; derive RESCUE from AGGRESSIVE 2026-08-02 03:41:55 -04:00
roboomp a6521f07ed fix(auth): guarded config-value resolvers against case-insensitive env hijack
On Windows process.env/Bun.env lookups are case-insensitive, so the
"env var name, else literal" resolvers turned a literal /login key like
`public` (OpenCode Zen's free key) into the built-in PUBLIC=C:\Users\Public,
sending `Authorization: Bearer C:\Users\Public` and 401ing every request.

Added `$envExact` in pi-utils, which trusts an env lookup only when an
exact-case key is enumerated (the only case-preserving signal on Windows;
the getter and hasOwnProperty/getOwnPropertyDescriptor traps are all
case-insensitive there). Wired it into all three resolvers:
resolve-config-value.ts, model-registry.ts, and auth-storage.ts.

Fixes #7361
2026-08-02 06:53:18 +00:00
roboomp 4c80c7b114 fix(mnemopi): exempted initialization from embed timeout
Kept the hard timeout and worker reap for steady-state embed requests while allowing first-use runtime installation and model bootstrap to finish without SIGKILL stranding the install lock.

Added deterministic coverage for initialization outliving the embed timeout budget and corrected the changelog contract.

Fixes #7352
2026-08-02 05:40:14 +00:00
roboomp b9bdbcec03 fix(mnemopi): bound busy timeout on every owned bank
Extended the shutdown busy-timeout clamp from the retain bank to all owned banks so a locked shared bank (per-project-tagged) cannot stall teardown for the default 5s SQLite timeout.

Fixes #7351
2026-08-02 05:34:58 +00:00
roboomp a4987ba518 fix(mnemopi): bounded embed worker IPC and reap on timeout
Embed-worker init/embed requests awaited the reply with no timeout, so a
wedged fastembed/onnxruntime runtime blocked the turn memory recall or the
shutdown consolidation forever, hanging headless -p/--mode json runs and
leaving __omp_worker_mnemopi_embed unreaped. The #5753 fix only bounded the
dispose-time consolidate await, not the embed IPC beneath it.

Bound every request with an unref-ed timeout; on expiry fail the request
and SIGKILL-reap the worker so the next call respawns a fresh child.

Fixes #7352
2026-08-02 05:33:11 +00:00
roboomp 82095f0c12 fix(mnemopi): bounded locked retention during teardown
Capped synchronous SQLite busy waits before starting bounded final consolidation, then spent only the remaining shutdown deadline on asynchronous drains.

Added regression coverage for a locked Mnemopi writer in the headless teardown path.

Fixes #7351
2026-08-02 05:27:11 +00:00
roboomp 1ff875ada1 docs(changelog): moved 7343 fix under unreleased
Fixes #7343
2026-08-02 05:09:35 +00:00
roboomp 3fab985c14 fix(eval): preserved console for conpty python kernels
Combined native HWND and stdio TTY evidence so compiled Windows Terminal launches no longer set CREATE_NO_WINDOW for the Python eval kernel.

Fixes #7343
2026-08-02 05:05:52 +00:00
Slava Zavadsky 3e0763eee7 fix(agent): keep search-tool scout gating live; gate workflowz line 5
Address review feedback on #7344:
- grep/glob/ast_grep descriptions now render via a getter instead of a
  construction-time field, so a live task.disabledAgents change (e.g. via
  /agents) is picked up on the next prompt rebuild instead of leaving
  stale 'Task + scout' guidance cached.
- The workflowz notice now also gates the 'Scout inline FIRST' verb on
  line 5, matching the already-gated line 14.
2026-08-02 00:02:06 -04:00
Slava Zavadsky 9885ee34fc fix(agent): stop leaking scout into prompts when it is disabled
Hard-coded 'scout' references reached the model even when the scout
agent was disabled via task.disabledAgents or absent from the session
spawn list. Gate every such reference on scout actually being spawnable:
the task tool description, the delegation gates, the plan-mode and
workflowz notices, the glob/grep/ast-grep guidance, and the task
specialization advisory. Prompt shape is otherwise unchanged; only
erroneous references to the unavailable subagent are dropped.

Closes #7313
2026-08-01 23:50:33 -04:00
can1357 92c79d80c7 feat: introduced OMP Browser Relay extension with CDP RPC execution
- Implement the OMP Browser Relay extension with WebSocket communication and CDP RPC execution.
- Add browser relay server, daemon management, and bridge multiplexing in the coding agent.
- Introduce CLI commands and settings schema options for configuring and installing the relay.
- Add utility functions and test suites supporting environment parsing and relay lifecycle handling.
2026-08-02 05:33:07 +02:00
Slava Zavadsky 556830a215 test(vibe): use deferred() for the worker-ready gate; changelog
Review (PR 7340):
- replace the manual resolver-capture promise with the repo-standard deferred()
  helper already used elsewhere in the file
- changelog: vibe pre-init-kill race fix under [Unreleased] Fixed
2026-08-01 22:06:03 -04:00
Slava Zavadsky 6e143bf567 test(vibe): fix kill-before-init race with a worker-ready handshake
The pre-init-kill test issued registry.kill() immediately after spawn()
returned; the mock worker only registers its AgentRef after the abort signal
lands, so on a loaded runner the job body may not have dispatched yet and
kill observed no registration at all (AgentRegistry.get() undefined), failing
the aborted-ref assertion. The mock now signals readiness once it is inside
the abort-wait, and the test awaits that before killing — deterministically
exercising the late-registration terminalization path the test names.

Flaked once on CI singleton (vibe session registry); 32/32 pass locally.
2026-08-01 21:11:52 -04:00
roboomp ca5504cae0 fix(tui): kept virtual-root children nested
- Advanced indentation for a virtual root's direct children so single-child roots no longer collapse to the shared column-0 root.

- Mirrored the fix in the HTML export renderer and added a multi-root regression.

Fixes #7332
2026-08-02 00:34:42 +00:00