Commit Graph

16882 Commits

Author SHA1 Message Date
can1357 4b8c19366d Merge PR #7437: fix(edit): prevent fuzzy replace-all self-matching (@roboomp) 2026-08-03 05:15:03 +02:00
can1357 a95476bad6 Merge PR #7441: fix(mcp): expand env vars in reauth OAuth credentials and reject empty tokens (@roboomp) 2026-08-03 05:15:03 +02:00
can1357 b8c81e195f Merge PR #7444: fix(coding-agent): keep completed session entries durable across crashes (@olegpulatov) 2026-08-03 05:15:02 +02:00
can1357 2c370ae524 Merge PR #7447: fix(openai): preserve Codex native image results (@roboomp) 2026-08-03 05:15:02 +02:00
can1357 a58584ff3c feat: implemented shared serialization utilities and standardized inventories
- Added shared Python call and literal serialization utilities with multiline verbatim support.
- Standardized tool inventories to format as an OpenAI-Harmony functions namespace using TypeScript declarations.
- Updated tool normalization and rendering functions to accept options objects and default to Python-syntax examples.
- Refactored Gemini dialect rendering to leverage shared serialization functions directly.
2026-08-03 05:06:49 +02:00
roboomp a3d1f35099 fix(openai): preserved Codex native image results
- Normalized result-bearing Codex image items on terminal output events and emitted standard image content.

- Preserved result-bearing image calls during full Responses history replay despite stale provider status.

- Added stream and replay regressions for the Codex path.

Fixes #7445
2026-08-03 02:41:03 +00:00
Oleg Pulatov 68574ff47f docs(coding-agent): attribute session durability fix to #7444 2026-08-03 04:15:48 +02:00
Oleg Pulatov 6c84a8bb99 fix(coding-agent): keep completed session entries durable across crashes
Completed transcript entries now write through to the OS page cache on
append instead of microtask-batching, supersede in-flight atomic rewrites
with a synchronous full-body publish, and land on the live moveTo path
(source pre-rename, destination post-rename) so a software crash no longer
drops finished user/assistant/tool events. Streaming text remains durable
only at message_end; no fsync/power-loss guarantee is claimed.
2026-08-03 04:14:58 +02:00
roboomp 4d74fabe70 test(mcp): restored OAuth env after reauth coverage
Preserved pre-existing MCP_OAUTH_CLIENT_ID and MCP_OAUTH_CLIENT_SECRET values
instead of deleting them after the env-expansion regression test, preventing
later tests in the same Bun process from observing mutated caller state.

Fixes #7440
2026-08-03 00:37:55 +00:00
roboomp c6a057073b fix(mcp): expand env vars in reauth oauth credentials and reject empty tokens
/mcp reauth read OAuth clientId/clientSecret from the raw, unexpanded config
while URL and resource used expandEnvVarsDeep, so `${VAR}` placeholders were
sent literally to the token exchange. MCPOAuthFlow.exchangeToken() also accepted
any HTTP-success body, storing an empty access token when a provider signals
failure with HTTP 200 (e.g. Slack `{ ok: false, error }`), surfacing only later
as invalid_token.

- Select flow client credentials from runtimeBaseConfig / expanded auth block;
  keep the raw placeholder for the persisted config file.
- Reject token responses without a non-empty access_token, including the
  sanitized provider error when present.
- Add regression tests for env-expanded reauth credentials and HTTP-200 token
  error bodies.

Fixes #7440
2026-08-03 00:33:36 +00:00
roboomp aad12ab2f7 fix(edit): prevented fuzzy replace-all self-matching
Matched fuzzy candidates against immutable source text while excluding ranges already selected for replacement. Inserted replacement content can no longer become a later exact or fuzzy candidate.

Added regression coverage for multiple fuzzy source matches when the replacement contains the original search text.

Fixes #7432
2026-08-03 00:00:58 +00:00
can1357 cc2265f681 feat: use simple form replace when replace is the edit mode 2026-08-03 01:00:51 +02:00
can1357 aa014717dc refactor(coding-agent): restored static computer worker start hook
- The pi-utils/mime subpath fix made the computer worker graph lazy-safe,
  so the dynamic-import dispatch added for laziness is no longer needed;
  cli.ts and the bundled-host fixture statically import
  startComputerWorker() per the no-inline-import rule.
- worker-entry keeps the selector-guarded direct-source auto-start; the
  worker-selector test now pins the exported hook contract. Verified
  --no-addons CLI startup stays addon-free and the bundled/compiled
  worker-host tests pass.
2026-08-03 00:19:58 +02:00
can1357 0156ddcbe1 fix(coding-agent): kept computer worker graph off CLI startup
- The PR #7205 merge left cli.ts statically importing startComputerWorker,
  dragging the computer worker graph (and pi_natives via the pi-utils
  barrel) into normal CLI startup; --version died under --no-addons and
  dotenv loaded before profile bootstrap. worker-entry is now a
  self-starting side-effect module dispatched via dynamic import like
  every other worker selector, and utils/clipboard.ts imports the mime
  constant from its submodule instead of the barrel.
- Repointed the clipboard test spy at @oh-my-pi/pi-natives/clipboard —
  spying the barrel never intercepted the subpath the code imports, so
  the real native bridge ran (X11 timeouts on headless CI).
- Refreshed the pinned HTML export template digest and the scout gate
  phrase the system-prompt rewrite changed.
2026-08-03 00:02:29 +02:00
can1357 881eec7d26 fix(release): shipped clipboard entrypoint in pi-natives npm package
- prepareNativeCorePackage's files whitelist predated the native/clipboard
  module; the packed tarball lacked it and the coding-agent CLI failed with
  'Cannot find module @oh-my-pi/pi-natives/clipboard' in the tarball install
  smoke. Verified the packed tarball now contains clipboard.js/.d.ts.
2026-08-02 23:32:24 +02:00
can1357 58c645e32b fix(natives): aligned desktop capability test with optional displayServer
- napi omits the displayServer key when the backend reports None (headless
  CI hits the unavailable backend); the declared contract is
  displayServer?: string, so assert the value type instead of key presence.
2026-08-02 23:25:16 +02:00
can1357 83c0ba0198 fix(natives): used libc::Ioctl for uinput requests to fix musl build
- libc::ioctl takes c_ulong on glibc but c_int on musl; the hardcoded
  c_ulong request type broke //:natives-linux-musl-{x64,arm64}. Verified
  by cross-checking aarch64-unknown-linux-musl on the CI-pinned nightly.
2026-08-02 23:07:47 +02:00
can1357 b0d38498a2 fix(natives): used from_mins for operation timeout to satisfy clippy
- CI's bazel-pinned clippy (nightly-2026-04-29) denies
  duration_suboptimal_units under -Dwarnings; verified against the same
  pinned toolchain locally.
2026-08-02 23:01:51 +02:00
can1357 800b23dd6c fix(natives): gated pipewire behind opt-in feature, fixed linux clippy
- libspa-sys hard-links system libpipewire-0.3 via pkg-config, which no CI
  or cross triple (musl, arm64) can satisfy; bazel addons already build with
  crate_features = [], so shipping builds lose nothing. Linux devs opt in
  with --features wayland-pipewire.
- Gated normalize_role_macos and the wayland capture helpers to the configs
  that use them; handled the cfg(test) AxHandle variant in AtSpiAx::object.
- Fixed clippy-strict violations (redundant_pub_crate, missing_const_for_fn,
  unnecessary_wraps, collapsible_if, map_unwrap_or, needless_return,
  needless_pass_by_ref_mut) across the new linux desktop backend.
2026-08-02 22:55:29 +02:00
can1357 0b1649784a fix: removed unused service-tier import after launch-help relocation 2026-08-02 21:25:58 +02:00
can1357 f13439332c chore: normalized changelog entries after merges 2026-08-02 21:22:49 +02:00
can1357 10625d2e9a Merge PR #7376: feat(coding-agent): add OpenAI service tier override (@paralin)
# Conflicts:
#	packages/coding-agent/src/commands/launch.ts
2026-08-02 21:22:41 +02:00
can1357 9b3e9a5d0e Merge PR #7126: feat(omp): navigate conversation turns in tree (@oleksoleksoleks) 2026-08-02 21:21:37 +02:00
can1357 3dd4b6b226 Merge PR #7197: feat(coding-agent): configure web search timeout (@will-bogusz) 2026-08-02 21:21:37 +02:00
can1357 05af20a9f2 fix(coding-agent): prevented recursive argument placeholder expansion in substituteArgs
Extracted the coding-agent scope of PR #7077 (@santhreal): single-pass
placeholder matcher so positional values containing literal $@ or
$ARGUMENTS are never re-expanded. The unrelated utils formatting changes
in that PR were not taken.
2026-08-02 21:19:45 +02:00
can1357 73b834dcbc style: applied biome formatting to merged evaluator fixes 2026-08-02 21:01:20 +02:00
can1357 a7f3bc2a17 chore: normalized changelog entries after merges 2026-08-02 21:01:11 +02:00
can1357 f1c7eda7de Merge PR #7205: perf(cli): keep root help off runtime graph (@eggpeat)
# Conflicts:
#	packages/coding-agent/src/cli-commands.ts
#	packages/coding-agent/src/cli/args.ts
2026-08-02 20:59:12 +02:00
can1357 f7480294b4 fix(agent): track rewritten xdev approval tiers 2026-08-02 20:57:06 +02:00
can1357 721c12382c Merge PR #7314: fix(agent): skip prewalk switch on read-only xd:// device calls (@roboomp) 2026-08-02 20:57:06 +02:00
can1357 fa72776652 fix(keys): keep unmodified alternate keys as text 2026-08-02 20:57:05 +02:00
can1357 3177f6bdf7 test(catalog): cover DeepSeek policy without bundled models 2026-08-02 20:55:16 +02:00
can1357 46ca4c6095 Merge PR #7317: fix(catalog): downgrade forced tool choice for deepseek reasoning models (@roboomp) 2026-08-02 20:55:16 +02:00
Zhafron 31782857c0 test(coding-agent): reset the IRC bus alongside the agent registry
The hub data-refresh teardown resets the global AgentRegistry but leaves the
cached global IrcBus bound to the discarded instance, because IrcBus captures
its registry at construction (src/irc/bus.ts). Any later file in the same
process then sends through a bus whose registry no longer knows the agents
registered after the reset.

The defect is latent at the current file ordering and surfaces as soon as suite
composition changes: with agent-hub-activate.test.ts running before
agent-session-plan-mode-convergence.test.ts, the plan-mode side-channel
auto-reply is stranded until its timeout.

Pair the two resets the way test/advisor/advisor-visibility.test.ts already
does. Reproduce with:
bun test packages/coding-agent/test/agent-hub-activate.test.ts \
         packages/coding-agent/test/agent-session-plan-mode-convergence.test.ts
2026-08-02 20:55:03 +02:00
can1357 c6b282bc68 fix(tui): preserve kitty event reporting mode 2026-08-02 20:54:39 +02:00
can1357 ce7d037240 Merge PR #7321: fix(tui): requested base-layout keys for shortcuts (@roboomp) 2026-08-02 20:54:39 +02:00
can1357 31d20a8ef8 Merge PR #7371: docs: document role-backed task agents (@fatihaziz) 2026-08-02 20:54:38 +02:00
can1357 71ca62cb1e Merge PR #7318: fix(coding-agent): support Wayland image paste (@roboomp)
# Conflicts:
#	packages/coding-agent/src/utils/clipboard.ts
2026-08-02 20:54:38 +02:00
can1357 452338edc3 test(coding-agent): use Bun for skill fixtures 2026-08-02 20:53:47 +02:00
can1357 846f7977dd Merge PR #7246: fix(coding-agent): let customDirectories skills win over default-path duplicates (@zhang17-24) 2026-08-02 20:53:47 +02:00
can1357 965d1239cf Merge PR #7310: fix(omp): refresh context budget after shake (@oleksoleksoleks) 2026-08-02 20:53:46 +02:00
can1357 92fc62a83d test(session): canonicalize expected session path 2026-08-02 20:53:36 +02:00
can1357 5d6ec7f073 Merge PR #7397: fix(session): make project directories safe and unique (@roboomp) 2026-08-02 20:53:36 +02:00
can1357 980c78538b Merge PR #7395: fix(postmortem): resolve native hard-exit per call (@roboomp) 2026-08-02 20:53:35 +02:00
can1357 912807cdbe Merge PR #7394: fix(update): detect active Linux libc (@BrianHotopp) 2026-08-02 20:53:35 +02:00
can1357 990ec2b0e8 fix(catalog): exclude Token Plan speech recognition models 2026-08-02 20:53:35 +02:00
can1357 49729375ef Merge PR #7392: fix(catalog): admit discovered Token Plan chat models (@roboomp) 2026-08-02 20:53:35 +02:00
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