Commit Graph
859 Commits
Author SHA1 Message Date
LunarECL e7fdc99afd feat(ai): report Anthropic extra usage 2026-07-23 21:25:15 +09:00
can1357 395e5ba288 fix(coding-agent): bypass anonymous-connect guard when a tool auth challenge is present
Servers may allow the unauthenticated MCP handshake yet protect individual
tool calls via _meta["mcp/www_authenticate"]. The 'reauthorization is not
required' guard would silently abort the tool-challenge reauth path.
2026-07-23 11:37:11 +02:00
can1357 7880c459b7 Merge PR #6346: fix(coding-agent): retry MCP tool auth challenges (@spenceresin8) 2026-07-23 11:37:11 +02:00
Gareth-Rouse e2839d1288 feat(ai): added Synthetic usage provider
/usage and omp usage now report Synthetic (synthetic.new) quota state
via GET /v2/quotas (free, does not consume quota): the rolling 5-hour
request limit with per-tick regeneration rate, and the weekly credit
quota in USD. Applies to API-key credentials for the synthetic
provider; every payload section is parsed defensively since only
subscription is documented.
2026-07-23 08:46:18 +01:00
slee1996 2145ab8f8e fix(coding-agent): retry MCP tool auth challenges 2026-07-22 23:44:38 -06:00
can1357 741aaa301d Merge PR #5895: feat(tui): allow re-answering a past ask from the session tree (@Mathews-Tom) 2026-07-22 21:13:23 +02:00
can1357 d4219e6d0b Merge PR #6207: fix(usage): align multi-account /usage columns across windows (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 1a09f5cfd6 fix(auth): reject image smart-paste while a modal prompt owns focus
The new global smart-paste listener reused handleImagePaste(), whose
image branches insert [Image #N] into the hidden main editor when a
login/API-key prompt is focused. Mirror the enhanced-paste behavior:
show 'Image paste is not supported in this prompt' and skip image-path
detection so only clipboard text reaches the focused prompt.
2026-07-22 21:13:19 +02:00
can1357 829d2dcea9 Merge PR #6201: fix(auth): route smart paste into focused prompts (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 680cb38436 Merge PR #6220: fix(tts): prioritize playback interruption on Esc (@roboomp) 2026-07-22 21:13:19 +02:00
can1357 e1173b8aeb Merge PR #6199: fix(tui): reuse settled components after compaction (@roboomp) 2026-07-22 21:13:17 +02:00
can1357 d723de46f9 Merge PR #6206: fix(session): skip titles for local extension commands (@roboomp) 2026-07-22 21:13:16 +02:00
roboomp 013f70c7d7 fix(tts): prioritized playback interruption on escape
- Moved active playback cancellation ahead of ongoing loop and stream interruption.

- Added an overlapping TTS and agent-turn regression.

Fixes #6118
2026-07-21 21:13:45 +00:00
roboomp 4fd9dd5722 fix(usage): align multi-account /usage columns across windows
The TUI /usage matrix sorted each quota window's account columns
independently by used fraction, so the positional `account N` labels
denoted different credentials on each row. An account exhausted on one
window but light on another (e.g. a Kimi Code account's 5h limit)
rendered its exhausted bar under a sibling that still had quota, making
the section `% free` and capacity numbers look wrong.

Order account columns once per provider (worst-first) and hold that
order stable across every window row.

Fixes #6067
2026-07-21 20:48:12 +00:00
roboomp c87ee802b1 fix(session): skipped titles for local extension commands
- Classified registered extension commands before automatic title generation while preserving normal and prompt-producing slash command titles.
- Added regression coverage for one-shot local handling, unnamed-session preservation, and forwarded prompt eligibility.

Fixes #6061
2026-07-21 20:44:29 +00:00
roboomp 0d8a9d2f07 fix(auth): routed smart paste into focused prompts
- Intercepted the configured smart-paste shortcut while a paste-capable modal owns focus.
- Added regression coverage for Ctrl+V API-key entry and documented the fix.

Fixes #6057
2026-07-21 20:33:16 +00:00
roboomp 13039b7bdf fix(tui): reused settled components after compaction
Preserved settled user and assistant component instances during compaction-only transcript rebuilds so warmed Markdown and layout caches remain valid.

Covered both manual and automatic compaction paths with focused regression tests.

Fixes #6033
2026-07-21 20:25:35 +00:00
Mathews-Tom d7f6ce5e04 Merge remote-tracking branch 'upstream/main' into feat/tree-ask-reanswer 2026-07-21 19:25:33 +05:30
can1357 3c6ade647b Merge PR #4784: fix(coding-agent): persist bash shortcut cwd changes (@jeffscottward) 2026-07-20 22:50:05 +02:00
can1357 60cbcc8c9d Merge PR #5055: feat(coding-agent): add timestamp to per-turn token-usage row (@zommiommy) 2026-07-20 22:50:05 +02:00
Mathews-Tom ab1d7db7d1 Merge remote-tracking branch 'upstream/main' into feat/tree-ask-reanswer
# Conflicts:
#	packages/coding-agent/src/modes/controllers/selector-controller.ts
2026-07-19 15:02:33 +05:30
can1357 f33465a977 feat(tui): added shift+enter summarize-and-switch to the session tree selector
- Shift+Enter on a tree entry forks with a branch summary directly, skipping
  the summary prompt and ignoring the branchSummary.enabled gate.
- Plain Enter keeps existing behavior: direct switch, with the summary prompt
  only for users who enabled branchSummary.enabled.
- Updated the selector help line and added controller-level regression tests.

Fixes #5152
2026-07-18 21:27:12 +02:00
can1357 157e940d5e Merge PR #5786: fix(auth): scoped post-login model refresh and stripped cache credentials (@roboomp)
# Conflicts:
#	packages/catalog/src/model-cache.ts
2026-07-18 20:14:11 +02:00
can1357 e38389a01e fix: match terminal.showImages schema path in settings side-effect switch
SettingsSelector dispatches schema settings by full path (terminal.showImages),
so the showImages case never fired from the /settings flow. Add the full-path
case label and cover both ids in the side-effect test.
2026-07-18 20:12:48 +02:00
can1357 8a25d9e517 Merge PR #5767: fix(coding-agent): clear inline images when disabled (@derekszen) 2026-07-18 20:12:48 +02:00
Derek Zeng 9a452077b2 fix(coding-agent): clear inline images when disabled 2026-07-18 18:12:08 +08:00
Mathews-Tom 737dcb26d7 fix(coding-agent): reach ask re-answer flow from the active leaf in /tree
The interactive /tree selector's own no-op guard ("Selecting the current
leaf is a no-op") fired before ever reaching navigateTree()'s
allowAskReopen path added in 743c8ab7d, so that fix was unreachable from
the actual UI whenever the selected ask toolResult was already the
current leaf (interrupted right after answering, or navigated there by
another caller).

Let a current-leaf selection fall through to the reopen path when the
entry is an ask toolResult, mirroring the same targetIsAskResult check
navigateTree() uses.

Fixed in response to Codex review threads posted as PR review bodies
(not inline comments) on #5895 at 20:24:48Z and 21:54:30Z, which
predate 743c8ab7d and were never addressed.
2026-07-18 05:13:33 +05:30
Jeff Scott Ward 3e24087111 fix(coding-agent): persist bash shortcut cwd changes 2026-07-17 16:58:32 -04:00
Wolfgang Schoenberger 1d681d9eeb fix(coding-agent): show loop state in status line 2026-07-17 13:19:55 -07:00
Mathews-Tom 7bdbfad9f5 fix(tui): address ask re-answer review feedback on #5895
- Gate navigateTree()'s ask toolResult reopenAsk protocol behind a new
  allowAskReopen option, set only by the interactive /tree selector.
  Every other navigateTree() caller (extensions, hooks, ACP,
  session-extension actions) now falls through to the pre-#5642 plain
  leaf move instead of reporting a successful no-op navigation.
- Anchor the branch-summary entry collection on targetEntry.parentId
  for an ask re-answer completion so the replaced (abandoned) answer
  is included in the summary instead of silently dropped.
- #recoverAskReanswerQuestions now walks the ancestor chain past
  interleaved sibling toolResults to find the assistant entry that
  actually emitted the ask toolCall, instead of assuming it's the
  toolResult's direct parent.
- Replace the fabricated `as unknown as AgentToolContext` standalone
  tool context in SelectorController#reanswerAsk with
  AgentSession#buildAskReanswerContext(), a fully-typed context
  backed by real session state.
- #reanswerAsk now rejects a chatRedirect ("Chat about this") result
  instead of silently completing the navigation with it.
- Fix the CHANGELOG entry's external-contribution attribution format.
2026-07-18 00:07:18 +05:30
Mathews-Tom fcbcf73769 feat(tui): allow re-answering a past ask from the session tree
Selecting an ask toolResult in /tree previously just repositioned the
leaf onto the stale answer without re-running the interactive picker
(issue #5642). navigateTree() now detects an ask toolResult target and
returns { reopenAsk: { toolCallId, questions } } recovered from the
original toolCall's persisted arguments, instead of mutating anything.
The TUI's tree selector re-opens the ask picker via a standalone
AskTool.execute() call (reusing the live tool-execution UI context),
then calls navigateTree() again with { reanswerAskResult } to branch a
*new* sibling toolResult off the same ask toolCall -- the original
answer's branch stays fully reachable. Non-ask toolResults, and ask
toolResults whose original arguments can't be recovered (legacy/
corrupted sessions), keep the existing plain leaf-move behavior.

This implements direction 2 from the issue's maintainer triage
(re-answer as a new sibling branch), not direction 1 (resuming the
agent turn) or direction 3 (docs-only).
2026-07-17 23:29:35 +05:30
can1357 eac51b6a04 Merge: darkphilosophy/feat/advisor-per-agent-toggle
Brings the per-advisor toggle, status-line glyphs, quota display, and the
failing-advisor stall/abort fix (f4c8143) onto main's rewritten advisor
runtime. Conflict reconciliation kept main's architecture (fingerprint
prefix reconciliation, host-level onTurnError recovery + fallback chains,
terminal-failure classification) and ported the branch semantics onto it:

- #failing latch: waitForCatchup resolves immediately while an advisor is
  mid-failure; parked waiters wake the moment a turn fails, before any
  async hook or retry sleep.
- Turn-end render containment: a formatter bug restores the cursor/prefix/
  dedup snapshot and never propagates into the primary's turn-end callback
  (per-advisor try/catch boundary in AgentSession).
- Quota pause: when host recovery declines a usage-limit failure, the
  runtime latches quotaExhausted, requeues the batch, and notifies —
  cleared only by an explicit reset.
- Hard halt after a permanent rejection or three backlog-drop cycles.
- #recoverAdvisorTurn also marks usage limits for structural errors thrown
  before any assistant turn is recorded.
2026-07-17 07:37:29 +02:00
can1357 2a6d551063 revert(status-line): restored single-row status bar with priority drop
- Reverted PR #5751 (issue #5749): continuation rows wrapped the editor
  top border onto extra lines, which is unacceptable for the input frame.
- EditorTopBorder is back to a single content/width pair; narrow widths
  drop right segments, shrink the path, then drop left segments.
2026-07-17 05:49:13 +02:00
can1357 adb2a3c7e2 style: formatted files from owner-approved merges 2026-07-17 05:33:19 +02:00
can1357 ac3d779fad merge PR #5592 via eval/pr-5592: feat(warp): emit native CLI-agent events 2026-07-17 05:29:29 +02:00
can1357 8bdb69254b merge PR #5596 via eval/pr-5596: feat(coding-agent): support per-project model roles
Combined #5586's role-tag precedence with #5596's scope labels in the
selector status messages.
2026-07-17 05:23:49 +02:00
can1357 86b6265ef5 Merge branch 'sweep/2026-07-17' into eval/pr-5592
# Conflicts:
#	packages/coding-agent/test/agent-session-checkpoint-rewind-branch.test.ts
2026-07-17 05:22:52 +02:00
roboomp c654abc980 fix(auth): scoped post-login model refresh and stripped cache credentials
Native /login and /logout (plus setup-wizard sign-in and RPC login)
refreshed model discovery with the default all-provider
online-if-uncached strategy, which reused a fresh authoritative cache row
and never re-ran fetchDynamicModels with the just-persisted credential,
so newly authenticated models stayed unavailable in-session and stale
endpoint data survived a relogin. Each auth-completion path now awaits a
provider-scoped refreshProvider(providerId, "online").

Also fixed writeModelCache serializing credential-bearing request headers
(Authorization, X-Api-Key, api-key, cookie, proxy-authorization) into the
plaintext models.db; they are now stripped before persistence and
re-derived on load from AuthStorage / provider config.

Fixes #5780
2026-07-17 03:03:25 +00:00
DarkPhilosophy 1b4c292f8f Merge remote-tracking branch 'can1357/main' into feat/advisor-per-agent-toggle 2026-07-17 05:47:09 +03:00
can1357 4e85f6acee apply PR #5490: fix(tui): refresh dark/light appearance on explicit ctrl+l reset
Cherry-picked 69c9fe8d4; resolved terminal.ts against the newer
onPrivateModeReport signature and unioned appearance tests with the
Windows Terminal polling regression.
2026-07-17 04:45:22 +02:00
can1357 f077d2c7b6 merge PR #5751 via eval/pr-5751: fix(status-line): wrapped overflow segments 2026-07-17 04:40:05 +02:00
can1357 99f2ffa033 merge PR #5703 via eval/pr-5703: fix(tui): preserved organization suffixes in usage panel 2026-07-17 04:39:14 +02:00
can1357 009dd99481 merge PR #5692 via eval/pr-5692: fix(usage): org-qualified session marker for same-email accounts 2026-07-17 04:39:14 +02:00
can1357 5903894e66 merge PR #5668 via eval/pr-5668: fix(session): preserved provider session for titles 2026-07-17 04:37:10 +02:00
can1357 e56ac80b1d merge PR #5667 via eval/pr-5667: fix(extensions): isolated self-scheduled callbacks from killing the session 2026-07-17 04:37:10 +02:00
can1357 daea3ab341 merge PR #5586 via eval/pr-5586: fix(tui): used role tag in model selector status messages 2026-07-17 04:37:08 +02:00
Gerben Meijer 1e083eb832 feat(coding-agent): support per-project model roles 2026-07-17 01:22:23 +04:00
roboomp 8ca790cb6f fix(status-line): wrapped overflow segments
Preserved configured segment priority by packing overflow into continuation rows.

Extended EditorTopBorder to render ordered rows inside the editor frame.

Fixes #5749
2026-07-16 20:19:54 +00:00
roboomp 5fe9bb92d8 fix(tui): preserved organization suffixes in usage panel
Removed the 24-column cap from account cells so wide terminals can show full disambiguating labels.

Kept usage bars independently capped and added regression coverage for same-email organization accounts.

Fixes #5701
2026-07-16 13:25:20 +00:00
robomp-bot 8a6017847b fix(coding-agent): mark session_stop continuations as willContinue 2026-07-16 20:35:01 +09:00