Commit Graph
8727 Commits
Author SHA1 Message Date
can1357 0b04fda921 fix(coding-agent): added vision fallback for text-only model image attachments
- Added `images.describeForTextModels` configuration defaulting to true for text models.
- Added `describeAttachedImagesForTextModel` to persist images and generate local:// descriptions.
- Added image-description notices to session flow with hidden typing and pre-user insertion.
- Added fallback behavior that returns notes when vision is unavailable or output is empty.
2026-06-17 12:24:18 +02:00
Can BölükandGitHub 169fc8ee36 Merge branch 'main' into fix-collab-transcript-wrapping 2026-06-17 11:58:18 +02:00
Can BölükandGitHub b7fe6f61a1 Merge branch 'main' into fix/litellm-base-url 2026-06-17 11:37:28 +02:00
Can BölükandGitHub 623653dc03 Merge branch 'main' into fix/google-oauth-validation-url 2026-06-17 11:36:40 +02:00
Can BölükandGitHub be99a77f5c Merge pull request #2802 from 21307369/fix/alibaba-endpoint-selection-v2
feat(alibaba-coding-plan): add endpoint selection for China/International/Custom
2026-06-17 11:36:02 +02:00
Can BölükandGitHub ec73cbb53e Merge pull request #2813 from usr-bin-roygbiv/agent/json-mode-stdout-hygiene
Keep JSON mode stdout clean during startup
2026-06-17 11:35:04 +02:00
Can BölükandGitHub 50fe87aef1 Merge pull request #2848 from DarkPhilosophy/perf/tui-sgr-coalescing
perf(tui): coalesce byte-adjacent SGR sequences in emitted lines
2026-06-17 11:33:34 +02:00
Can BölükandGitHub 871a3128a1 Merge pull request #2841 from lyc-aon/feat/stats-dashboard-redesign
feat(stats): redesign the omp stats dashboard
2026-06-17 11:32:34 +02:00
Can BölükandGitHub ed1259f855 Merge branch 'main' into fix/check-spoofed-versions-source 2026-06-17 11:28:43 +02:00
cagedbird043 aa586c4ec3 fix(catalog): route google-antigravity default baseUrl to primary daily endpoint 2026-06-17 17:15:47 +08:00
DarkPhilosophy 8fbd21ebf6 fix(tui): do not coalesce across incomplete extended-color SGR
A semicolon-form extended color with a missing component (e.g. 38;2;255;0
lacking blue, or 38;5 lacking the palette index) has ambiguous arity: if
a following SGR is concatenated onto it, the next code is absorbed as the
missing channel/index and the rendered color changes. Stop a merge run at
any parameter list that ends mid extended-color so the following sequence
keeps its original framing. Complete colors and the self-delimiting colon
form still merge, so the win is unchanged on real transcripts (34.3% SGR
reduction on the sampled capture). Adds regression tests for incomplete
truecolor/indexed runs and the complete-color merge.
2026-06-17 10:55:35 +03:00
can1357 94a813788f chore: bump version to 16.0.4 2026-06-17 09:44:33 +02:00
can1357 8443a42d25 ux(coding-agent/modes): added troubleshooting tip for PI_DIALECT tool-calling fallback
- Updated the coding-agent modes tips to mention PI_DIALECT for providers that mis-handle native tool calls.
- Clarified a troubleshooting option for restoring behavior when inference providers cannot parse tool-call payloads.
2026-06-17 09:43:45 +02:00
can1357 bcf29b9d1b fix(ai): fixed nested JSON coercion for tool argument values
- Enabled recursive parsing in `tryParseJsonForTypes` to coerce double-encoded JSON strings.
- Updated `coerceArgsFromIssues` to parse object/array JSON strings before singleton-array fallback.
- Prevented malformed container strings from being wrapped into arrays so validation returns array errors directly.
2026-06-17 09:43:39 +02:00
can1357 fb3534740f feat(catalog): added GLM-5.2 reasoning support for ZAI and zhipu completions
- Added ZAI GLM-5.2 reasoning-effort mapping, translating minimal to none and xhigh to max.
- Enabled ZAI and zhipu GLM-5.2 completion requests to send reasoning_effort and tool_stream.
- Added provider token clamping so GLM-5.2 completion requests use capped max_tokens.
- Updated catalog policies to route GLM-5.2 max-token and reasoning support through ZAI/zhipu hosts.
- Removed synthetic HF model entries and aligned GLM-5.2 catalog specs with real providers.

Fixes #2833
2026-06-17 09:38:43 +02:00
can1357 22bd89912d Merge remote-tracking branch 'origin/farm/d2160078/respect-skills-automatically' 2026-06-17 09:37:41 +02:00
can1357 6b9ae4cbc3 Merge remote-tracking branch 'origin/farm/c99534a5/omit-google-auto-toolconfig' 2026-06-17 09:26:57 +02:00
can1357 e7d86a8813 Merge remote-tracking branch 'origin/farm/3e227f1b/fix-chatgpt-token-exchange-403' 2026-06-17 09:25:35 +02:00
can1357 66f0f85d9d Merge remote-tracking branch 'origin/farm/7793113a/fix-rpc-todo-injection' 2026-06-17 09:24:50 +02:00
can1357 882a5e0bf0 Merge remote-tracking branch 'origin/farm/4cf935c9/fix-hashline-ins-post-visible-line' 2026-06-17 09:24:37 +02:00
can1357 2ccbd0bbea fix: skipped oversized spans while continuing BFS summary unfolding
- Changed `select_folded_spans` to skip an unfold candidate that exceeded `unfold_limit` and continue processing the remaining BFS queue instead of breaking.
- Added a regression test in `summary.rs` proving a large `<style>` raw-text span no longer starves sibling HTML sections from unfolding.
- Updated the summary unfold-ceiling setting description to document that overflowed candidates stay folded while BFS continues.
2026-06-17 09:24:19 +02:00
lycaon 9a39b0093f fix(scripts): check current Gemini CLI version source 2026-06-17 00:16:36 -06:00
DarkPhilosophy 87912e1f4d perf(tui): coalesce byte-adjacent SGR sequences in emitted lines
The renderer's component tree emits each styled span as
<set-color>text<reset>, producing runs of byte-adjacent SGR sequences.
Two byte-adjacent SGR sequences are semantically identical to one SGR
carrying both parameter lists (params apply left-to-right), so merging a
run into a single CSI is behavior-preserving and cuts per-frame byte
volume and SGR-dispatch count on slow terminal engines (xterm.js/WebGL
under a large viewport). Each emitted sequence is capped at 16 parameter
tokens so long runs split across several valid CSIs instead of
overflowing a terminal's parameter buffer. On by default; disable with
PI_NO_SGR_COALESCE=1.
2026-06-17 08:48:22 +03:00
lycaon 525f4baa64 feat(stats): redesign the omp stats dashboard
Rewrite the local `omp stats` web UI on the OMP brand palette with a left nav, focused per-section views, a new Projects view, a system-aware light/dark toggle, and flicker-free navigation. Same data, endpoints, and command; the only server change is a 1h time-range bucketing fix in the aggregator.
2026-06-16 23:30:50 -06:00
roboomp b112a7d381 fix(prompting): instructed agents to load matching skills
- Added default system-prompt guidance to scan skill descriptions and read applicable skill:// content before work.
- Covered the rendered prompt contract with a frontend-design skill regression test.

Fixes #2829
2026-06-17 04:28:03 +00:00
roboomp 66fcb8f776 fix(providers): omitted google cli auto tool config
Stopped google-gemini-cli and google-antigravity requests from sending explicit AUTO toolConfig entries for toolChoice auto, matching the shared Google provider behavior.

Added regression coverage for both Gemini CLI provider identities.

Fixes #2830
2026-06-17 04:19:24 +00:00
roboomp 44d06ad188 fix(ai): repaired chatgpt token exchange
Added Codex connector OAuth scopes to browser login and preserved structured token endpoint error details instead of object coercion.\n\nFixes #2825
2026-06-17 03:57:31 +00:00
roboomp 75d8d97220 fix(session): persisted todo reminder injections
Recorded todo reminder developer messages in the session log so JSONL transcripts match model-visible context when reminders are enabled.\n\nFixes #2824
2026-06-17 03:49:55 +00:00
roboomp 80cfc4737c fix(rpc): honored todo setting opt-outs
Preserved project-level todo.enabled, todo.reminders, and todo.eager settings in protocol hosts instead of forcing host defaults.\n\nFixes #2824
2026-06-17 03:30:40 +00:00
roboomp e42353a79b fix(hashline): recorded acp read lines
Merge displayed bridge-backed range and multi-range read lines into the existing hashline snapshot provenance so INS.POST anchors pass visible-line validation after ACP reads.

Fixes #2773
2026-06-17 02:54:26 +00:00
can1357 d5b3c78132 chore: update docs 2026-06-17 04:37:39 +02:00
Alexander Kirilin 11e6eb0c2c fix(litellm): support LITELLM_BASE_URL 2026-06-16 20:54:55 -04:00
lsmir2 e264d8b100 fix(auth-storage): replace legacy api_key rows on OAuth login upgrade
When a user who previously logged in (stored as api_key credential) re-logs
in with the new version (returns OAuthCredentials with enterpriseUrl), the old
api_key row was not replaced by #upsertOAuthCredential. AuthStorage.getApiKey()
prioritizes api_key over OAuth, so the old row was matched, returned a raw key
without JSON wrapper, and the enterpriseUrl (selected endpoint) was lost.

Changed to set() which calls replaceAuthCredentialsForProvider() to replace ALL
existing credentials for the provider.

Related to #2802
2026-06-17 08:47:17 +08:00
can1357 ce9db56066 feat(coding-agent): added advisor CLI flag for runtime advisor enabling
- Added a new `--advisor` flag to argument parsing and launch flag definitions.
- Applied the parsed `advisor` flag as a runtime-only override of `advisor.enabled` during startup.
- Updated advisor-related docs and added parseArgs tests for `--advisor` behavior and position handling.
2026-06-17 02:14:11 +02:00
can1357 8eeb707387 chore: bump version to 16.0.3 2026-06-17 01:58:36 +02:00
can1357 467ffb92d6 chore: update changelogs 2026-06-17 01:57:27 +02:00
can1357 b1878bdbe4 Merge remote-tracking branch 'origin/farm/8c67833b/local-auto-thinking-classifier' 2026-06-17 01:57:21 +02:00
can1357 37646a4a14 fix(coding-agent): refined STT warmup and mechanical space-hold handling
- Reworked space-bar hold detection to require sustained mechanical gaps.
- Implemented per-model STT dependency tracking with background warmup and deferred setup.
- Tightened Whisper cache validation to require both encoder and decoder models.
- Caught STT request promise rejections to avoid unhandled rejection noise.
2026-06-17 01:57:14 +02:00
can1357 eaba315cbd security(coding-agent): sanitized artifact names and wrapped extension and MCP tools
- Sanitized artifact filenames by normalizing tool names before composing spill paths.
- Applied `wrapToolWithMetaNotice` to custom tool adapters and RPC-host tools in agent-session setup.
- Wrapped SDK-registered extension/custom tools with the same meta-notice adapter during session creation.
2026-06-17 01:53:24 +02:00
usr_bin_roygbiv 3ea7e4f077 Keep JSON mode stdout clean during startup 2026-06-16 18:51:18 -05:00
roboomp 648f41c710 fix(coding-agent): expanded local auto-thinking budget
- Gave reasoning-capable local auto-thinking classifiers the safe 1024-token answer budget used by online reasoning classifiers.
- Raised the non-reasoning local classifier floor to 16 tokens and allowed tiny completions to honor larger explicit budgets.
- Added regression coverage for qwen3-1.7b and qwen2.5-1.5b local classifier budgets.

Fixes #2808
2026-06-16 23:36:29 +00:00
can1357 abe4453234 fix(coding-agent): stopped coercing explicit provider-id models to Codex
- Removed the Codex-preferred canonical remapping path for exact `provider/id` model matches.
- Resolved explicit `openai/gpt-5.5` references as `openai` provider without redirecting to `openai-codex`.
- Added regression tests to confirm explicit provider/id and enabled-model patterns are not coalesced to Codex.
2026-06-17 01:28:10 +02:00
can1357 d588a7e092 Merge remote-tracking branch 'origin/farm/3fd81e96/codex-default-provider-auth' 2026-06-17 01:24:19 +02:00
can1357 0e049b9a1a test(ai): dropped chdir and env mutation from request-debug recording test
- Replaced `process.chdir(tempDir)` plus `PI_REQ_DEBUG=1` auto-naming with explicit `setNextRequestDebugPath` targets, removing the `previousCwd` save/restore and the `debugFiles` directory-scan helper.
- The PI_REQ_DEBUG recording assertions now read each request/response from the path they set, so the test no longer mutates `process.cwd()` or the global debug env flag.
2026-06-17 01:22:31 +02:00
can1357 ab66280ea6 refactor(coding-agent): removed process.chdir from install and package-dir tests
- Added an optional `cwd` parameter to `looksLikeLocalPath` so bare-name local-directory detection resolves against an explicit path; the install-command test now passes a temp dir instead of `process.chdir`-ing into it.
- Removed `issue-1423-repro.test.ts`, whose package-dir-lookup repro relied on `process.chdir` to stage an isolated project.
2026-06-17 01:22:06 +02:00
can1357 db58a163b2 fix(coding-agent): isolated JS eval runtime globals across runtime lifetimes
- Made `JsRuntime` track the realm globals it installs (`#globalOwner`, `#ownedGlobalKeys`, `PRELUDE_GLOBAL_KEYS`) and reclaim them in `dispose()`, re-binding ownership through `#activateGlobals()` on cwd/run-scope/run; disposing an older inline/direct runtime no longer deletes a newer runtime's helper globals, and overlapping same-realm runs are serialized via `enterGlobalRun`.
- Added `WorkerCore.dispose()` (rejects pending tool calls with `ToolError` and disposes the runtime) and invoked it from `spawnInlineWorker` teardown in `context-manager.ts`.
- Updated the `js-static-import-rewrite` test to snapshot and restore any pre-existing `__omp_import__` global instead of unconditionally deleting it.
- Added `runtime-global-dispose.test.ts` covering newer-runtime global survival, older-runtime reactivation, and cross-runtime mutation rejection.
- Clarified the `runWorkerEntrypoint` comment in `cli.ts` about `parentPort` sync-prefix buffering for tab/eval workers.
2026-06-17 01:21:33 +02:00
can1357 48766eb88a fix(tui): kept ProcessTerminal and window-title writes headless under the test runtime
- `ProcessTerminal` now captures a per-instance `#headless` from `isTerminalHeadless()` at construction and re-reads it in `start()`; when set, `#safeWrite`, `start`, `stop`, `drainInput`, and `setProgress` short-circuit, so frame paints, `start()` probes (OSC 11 / DA1 / kitty), the progress keepalive, stdin raw mode, SIGWINCH, and teardown escapes no longer reach a real terminal during `bun test` (previously `#safeWrite` only skipped on `!isTTY`, so an interactive terminal leaked stray boxes and probe queries).
- Gated the `emergencyTerminalRestore()` blind-restore branch and `TerminalInfo.sendNotification` on the headless flag, and guarded `setTerminalTitle`/`pushTerminalTitle`/`popTerminalTitle` in `title-generator.ts`.
- Opted the terminal-contract suites (terminal-appearance, notifications, emergency-restore-altscreen, issue-2034 write gate, process-terminal-render-harness, render-stress-harness) back into real I/O with `setTerminalHeadless(false)`, restoring on teardown.
- Added `process-terminal-headless.test.ts` asserting zero writes under a forced TTY when headless and real frame/probe output after opt-out.
2026-06-17 01:21:03 +02:00
can1357 dcd1836d51 feat(utils): added isTerminalHeadless/setTerminalHeadless terminal-suppression flag
- Added `isTerminalHeadless()` / `setTerminalHeadless()` to `env`, a process-wide switch that suppresses real-terminal side effects (stdout escape/frame writes, stdin raw mode, CSI/OSC probes, SIGWINCH, window-title changes, emergency restore).
- Defaulted the flag to `isBunTestRuntime()` so it engages when `bun test` sets `NODE_ENV=test`, and made `setTerminalHeadless` return the previous value so callers can restore exact prior state.
2026-06-17 01:20:37 +02:00
roboomp 49259311d5 fix(coding-agent): preserve fallback provider order
Limit provider-priority ranking to provider defaults that share the first fallback default id, preserving mixed-provider startup precedence while keeping the OpenAI/Codex tie fix.\n\nFixes #2807
2026-06-16 23:12:39 +00:00
roboomp aec9355b26 fix(coding-agent): prefer codex default auth
Route stale OpenAI GPT default roles through canonical Codex selection when the catalog prefers the Codex OAuth transport, and rank shared provider defaults by canonical provider priority.\n\nFixes #2807
2026-06-16 23:01:57 +00:00