Commit Graph
9801 Commits
Author SHA1 Message Date
roboomp fd3f15c915 fix(todo): signal removal intent so agent stops rebuilding cleared todos
The /todo rm reminder was a generic "user manually modified" message
showing an empty list, so the model read the cleared list as missing and
re-populated it on the next turn. buildSystemReminder now emits an explicit
do-not-recreate / do-not-re-add directive for removals while keeping
status mutations (done/drop) neutral.

Fixes #5258
2026-07-14 17:33:21 +00:00
roboomp 04cc9b8a6f fix(coding-agent): rescue snapcompact dead-end when nothing is summarizable
When the single most-recent turn is itself over budget, prepareCompaction
returns undefined (findCutPoint never cuts inside a tool result, so the kept
tail has nothing on the summarizable side) and summary compaction cannot
start. The !preparation short-circuit in #runAutoCompaction emitted the
"Compaction freed too little context to make progress" warning and paused,
never running the artifact-backed shake elide rescue that #3786 wired into the
post-maintenance guard — so snapcompact/context-full maintenance looped the
warning with no attempt to shrink the oversized tail.

Run the same elide rescue before pausing, re-prepare on the shrunken branch,
and fall through to a normal compaction when the tail became summarizable
(writing a compaction entry anchors the stale billed usage so the auto-continue
re-check cannot re-trip). Only pause with a single warning when nothing is
elide-eligible. Flag historyRewritten on a rescue that offloaded content so
overflow recovery does not re-restore the just-failed turn onto the elided tail.

Fixes #4786
2026-07-14 17:24:12 +00:00
roboomp 8dfbe8e09d fix(model-resolver): strip thinking suffix before fuzzy model match
parseModelPatternWithContext ran matchModel on the whole pattern
(including a trailing :level thinking suffix) and only stripped the
suffix if that first pass missed. matchModel's provider-scoped fuzzy
match normalizes colons away and does subsequence matching, so
kimi-for-coding:high matched the longer sibling kimi-for-coding-highspeed
before the suffix was recognized as a thinking level, silently switching
model and billing tier.

Match the full pattern exactly first (new exactOnly mode skips the
fuzzy/substring fallbacks), then strip a valid :level suffix and recurse
before any fuzzy match; fuzzy-match the whole pattern only as a last
resort. Literal ids ending in :max still win via the exact pass.

Fixes #5151
2026-07-14 17:21:19 +00:00
roboomp dc2235fa9c fix(tui): preserved plan review scroll position
Retained relative body progress across transient non-scrollable render frames and added regression coverage for terminal-height changes.

Fixes #5232
2026-07-14 17:16:12 +00:00
can1357 1e81cde985 Merge PR #5277: fix(lsp): send initial workspace configuration (@roboomp) 2026-07-14 19:16:08 +02:00
roboomp 12c693a857 fix(tools): preferred active image provider with fallback
Preferred the active session provider after any explicit image preference and retained the configured auto order for remaining candidates.

Continued to the next credentialed image provider after HTTP failures.

Fixes #5218
2026-07-14 17:12:17 +00:00
roboomp 9ef5538f5c fix(rpc): tolerated malformed stdin lines instead of crashing
RPC mode iterated readJsonl(Bun.stdin.stream()), where JSON parsing runs
inside the generator. A parse error thrown from the generator escaped the
frame loop's try/catch (which only wrapped dispatch), unwound runRpcMode,
and exited the process on any non-JSON stdin line.

Read raw lines via readLines and JSON.parse each inside the existing
try/catch so a malformed line emits a Failed to parse command error frame
and the loop keeps running. Shared readJsonl stays strict for session-file
reads.

Fixes #5194
2026-07-14 17:11:48 +00:00
roboomp 531aeff15f fix(session): fall back to LLM compaction on manual /compact for text-only models
Manual /compact with the snapcompact strategy hard-threw when the active
model lacked image input, unlike the auto-compaction path which downgrades
to LLM-backed compaction. Clear snapcompactReady instead of throwing so the
flow falls through to #compactWithFallbackModel (active text-only model
tried first for text->text summarization).

Fixes #5064
2026-07-14 17:02:27 +00:00
roboomp 2d519d8f89 fix(tui): guard plugin tool renderer components against render crashes
Plugin/custom tool renderers can return a component whose render() throws
(e.g. a plugin styling its header off an object without a bold method,
producing TypeError: th.bold is not a function). ToolExecutionComponent only
caught the renderCall/renderResult factory, not the child component's later
render() pass, so the exception escaped and crashed the transcript.

Wrap every renderer-returned call/result component in SafeToolRendererComponent,
which catches render() errors and falls back to the tool label (call) or raw
result text (result), logging once per component.

Fixes #4978
2026-07-14 16:59:00 +00:00
roboomp df047effe3 fix(cli): guarded documented marketplace verbs from launch leak
`omp marketplace add xyz` and the other documented `omp plugin <action>`
verbs (marketplace, discover, upgrade, uninstall, enable, disable) were
never registered top-level commands, so `resolveCliArgv` forwarded the
whole argv to `launch` as an LLM prompt. The #2935 guard only caught
bare single-word verbs, missing the multi-word documented grammar.

Extended `reservedTopLevelWordMessage` to hint at the real
`omp plugin <action>` command for these verbs when used bare, with a
marketplace sub-action, or with a `name@marketplace` plugin id, while
genuine prose prompts beginning with the same words still route to
`launch`.

Fixes #4845
2026-07-14 16:56:15 +00:00
can1357 5e74444c27 fix(test): repair auth-storage-rotation merge resolution and normalize changelogs 2026-07-14 18:50:47 +02:00
can1357 a572448306 Merge PR #5297: fix(coding-agent): respect role thinking for temporary model picks (@roboomp)
# Conflicts:
#	packages/coding-agent/src/modes/controllers/selector-controller.ts
2026-07-14 18:47:28 +02:00
can1357 946ba4bcea Merge PR #5044: fix(cli): parse max-time duration suffixes (@roboomp)
# Conflicts:
#	packages/coding-agent/src/cli/flag-tables.ts
2026-07-14 18:46:14 +02:00
can1357 edc0511433 Merge PR #4967: fix(plugin): handle pinned git source replacements (@roboomp) 2026-07-14 18:45:31 +02:00
can1357 ba7bcf4cd1 fix(prompting): ignore code symbol magic keywords 2026-07-14 18:45:23 +02:00
can1357 334050d509 Merge PR #4968: fix(prompting): allow magic keywords beside punctuation (@roboomp) 2026-07-14 18:45:22 +02:00
can1357 4b5c32a092 Merge PR #4950: fix(mcp): resolve local image paths for tool calls (@roboomp) 2026-07-14 18:45:22 +02:00
can1357 5a79ef3308 Merge PR #4924: fix(coding-agent): skip autolearn capture after aborted turns (@metaphorics) 2026-07-14 18:45:22 +02:00
can1357 2c7b701e16 test(cli): cover one-shot print working indicator 2026-07-14 18:45:21 +02:00
can1357 67d0e35728 Merge PR #4906: fix(cli): show progress for print mode prompts (@roboomp)
# Conflicts:
#	packages/coding-agent/src/prompts/system/workflow-notice.md
2026-07-14 18:45:15 +02:00
can1357 7a2b027e47 fix(eval): keep completion aborts interruptible 2026-07-14 18:45:03 +02:00
can1357 5d28a319fd Merge PR #5015: fix(eval): shield Python agent bridge aborts (@roboomp) 2026-07-14 18:45:03 +02:00
can1357 28b001970b Merge PR #5099: fix(agent): abort repeated empty yield results (@roboomp) 2026-07-14 18:45:03 +02:00
can1357 82327af420 fix(coding-agent): require terminal user prompt for todo suppression 2026-07-14 18:45:03 +02:00
can1357 f1ade56f65 Merge PR #5097: fix(coding-agent): suppress todo reminders for interactive questions (@roboomp) 2026-07-14 18:45:02 +02:00
can1357 1dfec0d161 Merge PR #5090: fix(advisor): reduce stale advisories via delta coalescing, WIP markers, and delivery annotation (@apoc)
# Conflicts:
#	packages/coding-agent/src/advisor/__tests__/advisor.test.ts
#	packages/coding-agent/src/advisor/runtime.ts
#	packages/coding-agent/src/session/agent-session.ts
2026-07-14 18:44:57 +02:00
can1357 a9998ae07b Merge PR #5086: fix(agent): isolate memory root resolution (@roboomp)
# Conflicts:
#	packages/coding-agent/src/internal-urls/memory-protocol.ts
2026-07-14 18:41:54 +02:00
can1357 a011e07d18 Merge PR #5078: fix(coding-agent): prevent memory URL writes from leaking to cwd (@roboomp) 2026-07-14 18:41:17 +02:00
can1357 e31a508140 Merge PR #5057: fix(cli): route npm self-updates through npm (@roboomp) 2026-07-14 18:41:16 +02:00
can1357 7c1375ceb8 fix(coding-agent): preserve auth fallback resolution warnings 2026-07-14 18:41:16 +02:00
can1357 851b5a7c0c Merge PR #5377: fix(coding-agent): forward sessionId to getApiKey in subagent auth fallback (@djdembeck) 2026-07-14 18:41:16 +02:00
can1357 bfdca36f44 test(coding-agent): use portable eval isolation probe 2026-07-14 18:41:16 +02:00
can1357 79d7b74e24 Merge PR #5327: fix(coding-agent): isolate eval runtimes from terminal (@masonc15) 2026-07-14 18:41:16 +02:00
can1357 280d4b039b fix(coding-agent): persist pruned autolearn captures 2026-07-14 18:41:16 +02:00
can1357 af9e9a898b Merge PR #5217: fix(coding-agent): accept Auto-Learn capture empty stops (@roboomp) 2026-07-14 18:41:15 +02:00
can1357 e96f5451db Merge PR #5216: fix(coding-agent): reject empty advisor stop completions (@roboomp) 2026-07-14 18:41:15 +02:00
can1357 645cf45ed6 fix(coding-agent): preserve all terminal advisor notes 2026-07-14 18:41:15 +02:00
can1357 b52a4cdede Merge PR #5186: fix(coding-agent): preserve late advisor notes after terminal answers (@roboomp)
# Conflicts:
#	packages/coding-agent/test/agent-session-advisor-suppression.test.ts
2026-07-14 18:40:35 +02:00
can1357 c0a0216867 fix(advisor): close quarantine containment gaps 2026-07-14 18:39:54 +02:00
can1357 fcad4f22b9 Merge PR #5183: fix(advisor): quarantine unknown tool responses (@roboomp) 2026-07-14 18:39:54 +02:00
can1357 3a92c920fd Merge PR #5182: fix(coding-agent): load web search fallbacks lazily (@wolfiesch) 2026-07-14 18:39:53 +02:00
can1357 72b1ddf04c fix(session): validate pending exit diagnostics 2026-07-14 18:39:53 +02:00
can1357 7773f48ebc Merge PR #5168: fix(session): recover interrupted session turns (@paralin) 2026-07-14 18:39:53 +02:00
can1357 dde82c5ffe Merge PR #5167: fix(coding-agent): reject unknown continued session ids (@paralin) 2026-07-14 18:39:26 +02:00
can1357 583963150d fix(rpc): retain malformed frame errors 2026-07-14 18:39:26 +02:00
can1357 3539403e3c Merge PR #5156: fix(rpc): prevent rpc-ui extension UI response deadlock (@roboomp) 2026-07-14 18:39:26 +02:00
can1357 58b80dac42 Merge PR #5139: fix(coding-agent): flush throttled output tails (@wolfiesch) 2026-07-14 18:39:26 +02:00
can1357 f786fe4a6f Merge PR #5147: fix(coding-agent): support models.yaml custom config (@roboomp) 2026-07-14 18:39:26 +02:00
can1357 6fb7a7a5fd Merge PR #5392: fix(coding-agent): support GPT-5.6 Codex web search (@daandden) 2026-07-14 18:39:07 +02:00
can1357 d1c88dd89c fix(tui): reserve mixed assistant segments safely 2026-07-14 18:38:07 +02:00