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

@ -169,7 +169,7 @@ async fn notify_session_title(agent: &MvpAgent, session_id: acp::SessionId, titl
use crate::extensions::notification::{SessionNotification, SessionUpdate};
let notification = SessionNotification {
session_id,
session_id: session_id.clone(),
update: SessionUpdate::SessionSummaryGenerated {
session_summary: title.to_owned(),
},
@ -180,6 +180,8 @@ async fn notify_session_title(agent: &MvpAgent, session_id: acp::SessionId, titl
acp::ExtNotification::new("x.ai/session_notification", params.into());
let _ = agent.gateway.ext_notification(ext_notification).await;
}
agent.notify_session_info_update(&session_id, title);
}
async fn rename_chat_conversation(
@ -651,6 +653,29 @@ async fn handle_plugins_reload(agent: &MvpAgent) -> ExtResult {
async fn handle_commands_list(agent: &MvpAgent, args: &acp::ExtRequest) -> ExtResult {
let req: crate::session::slash_commands::ListCommandsRequest = parse_params(args)?;
let availability = agent.command_availability();
let skills_config = agent.cfg.borrow().skills.clone();
let compat = agent.cfg.borrow().compat_resolved;
// Chat product catalog never uses cwd plugin discovery / folder-trust.
// Prefer kind=chat even when sessionId is set so the pull matches ACU.
if req.kind.as_deref() == Some("chat") {
let response = crate::session::slash_commands::list_commands(
None,
&skills_config,
None,
availability,
compat,
false,
Some("chat"),
Some(agent.auth_manager.clone()),
)
.await?;
return Ok(acp::ExtResponse::new(Arc::from(
serde_json::value::to_raw_value(&response)?,
)));
}
if let Some(session_id) = req.session_id.as_ref() {
let Some(handle) = agent.session_handle_waiting_for_load(session_id).await else {
return Err(
@ -663,10 +688,6 @@ async fn handle_commands_list(agent: &MvpAgent, args: &acp::ExtRequest) -> ExtRe
)));
}
let skills_config = agent.cfg.borrow().skills.clone();
let compat = agent.cfg.borrow().compat_resolved;
let availability = agent.command_availability();
// For a given cwd, compute the plugin registry the same way a session would
// at spawn time (via build_for_cwd) and the same way reload_plugins_impl does
// (ancestor project config walk + vendor compat merge). This is required so
@ -713,8 +734,10 @@ async fn handle_commands_list(agent: &MvpAgent, args: &acp::ExtRequest) -> ExtRe
availability,
compat,
false,
req.kind.as_deref(),
Some(agent.auth_manager.clone()),
)
.await;
.await?;
Ok(acp::ExtResponse::new(Arc::from(
serde_json::value::to_raw_value(&response)?,
)))