Synced from monorepo

Synced from monorepo

Changes:
- Temporarily disable session share link creation in the TUI
- Do not approve plan on empty Enter from the revise prompt
- Expose chat product Skills via ACP available_commands_update
- Return immediately from a blocking wait on an already-completed ACP task
- Split headless pager module for clearer structure
- Stop git worktree prune from removing user registrations on resume
- Use compaction sampler tokenizer for item token counts
- Opt-in extra root CAs via GROK_EXTRA_CA_BUNDLE
- Cancel all session subagents when the user stops
- Let the session persistence actor exit when its session ends
- Make fullscreen terminal resize much cheaper on long sessions
- Report honestly from kill_task when an ACP task does not exist
- Hide /usage for external-auth deployments
- Forward the history-load trailer’s computer_reason to the client
- Remove ineffective no-op tool reminder
- Declare slash-command screen-mode support in one place
- Keep settings enum picker on the committed value until Enter
- Reap a PTY’s full process tree
- Stream tool calls from headless mode over ACP
- Bridge gateway task lifecycle to ACP for chat session background tasks
- Don’t warn about truncated history on a suppressed replay
- Fit full-replace summarizer input and recover on context-length errors
- Stop dropping agents over an unrecognized frontmatter color
- Add /undo as a slash alias for /rewind
- Harden sleep/wake token-refresh paths against forced re-login
- Add session/list ACP method
- Give each sampling backend its own conversion module
- Treat an unenrolled child process as a lint error
- Suppress the cancelled marker on send-now wake turns
- Stop tearing down Roslyn on every edit, and read C# diagnostics

Source-Revision: 2a28b4a86cfc4a4c133c35b7fc2a6a9964387c39
This commit is contained in:
grokkybara[bot] 2026-07-30 19:07:40 +00:00
commit dd04f397b1
367 changed files with 29489 additions and 10051 deletions

View file

@ -478,6 +478,7 @@ pub(super) async fn refresh_tokens(
principal_id = ?principal_id,
"OIDC: refreshing token"
);
let probe = super::refresh::SuspendProbe::start();
(|| {
refresh_tokens_once(
token_endpoint,
@ -488,7 +489,23 @@ pub(super) async fn refresh_tokens(
)
})
.retry(refresh_retry_policy())
.when(is_transient_refresh_error)
.when(move |err: &anyhow::Error| {
if !is_transient_refresh_error(err) {
return false;
}
if probe.straddled_past_grace() {
crate::unified_log::warn(
"auth.refresh.retry_suppressed_suspend",
None,
Some(serde_json::json!({
"suspended_ms": probe.suspended_ms(),
"error": err.to_string(),
})),
);
return false;
}
true
})
.await
}
/// One unretried POST to `token_endpoint`. Errors carry the typed