Changes: - Gate session-lifecycle heap steady state with a dhat soak - Unbreak merge lifecycle e2e after default model → grok-4.5 - Scan home-scope rules dirs at <root>/rules - Complete text-input paste and terminal parity - Gate project roles and personas - Use canonical editing in dialogs - Use canonical editing in search bars - Reject ambiguous MCP tool IDs - Harden Git operands for plugins - Simplify queue drain API - Pass RFC 9207 iss through MCP OAuth token exchange - Show leader roster when local agents map is empty - Use canonical editing in Persona views - Remove marketplace default-skills auto-install and purge old installs - Use canonical editing in extension forms - Add canonical dashboard text editing - Use canonical editing in settings - Add /summarize as a /recap alias - Restore previous agent when exiting dashboard - Use tool_choice auto for compaction - Settings toggle for snap-prompt-to-top on send - Update default models to grok-4.5 - Source login shell once for local bash (env + alias/function snapshot) - Template hardcoded param names in server-native tool descriptions - Fix System-Reminder XML tag injection in CLAUDE.md via agents_md - Fix remote workspace-server hardcoding LSP trust (repo code execution risk) - Clear orphaned tool-call updates at turn end - Suppress task wake after cancel - Send x-grok-client-identifier on direct API tool calls - Harden dashboard peek lease transitions - Host /btw side panel in live region (minimal mode) - Bound scroll presentation latency - Highlight multi-line constructs correctly in diffs and the file viewer - Block web_fetch non-public IPs; local opt-in is explicit-host only - Seed coding_data_retention_opt_out=false for OAuth e2es in pty-harness - Follow up clipboard delivery feedback - Use canonical editing in pickers - Route TextArea through canonical editor - Persistent "watching" status row; quieter turn markers - Gate sensitive edit targets - Expose agent registry counts and gate session churn on them - Default coding data sharing to opt-out until server preference applies - Wire chat attachment ids through gateway prompts - On auth refresh failure, issue retry - Forward preview provenance and computer lifecycle state - Document independent privacy controls and scope /privacy output - Strip SamplingError Display prefix on rate-limit UI copy - Stop dumping Cloudflare HTML into Retry failed - Disable in-place prompt edit (scroll jank on enter) - Strip forced ANSI color from gh pr view JSON - Plumb bash tool description onto ToolUsageCard wire
54 lines
1.2 KiB
Rust
54 lines
1.2 KiB
Rust
//! `/btw` -- ask a side question without interrupting the running agent.
|
|
//!
|
|
//! Returns `CommandResult::Action(Action::SendBtw(...))` so the dispatch layer
|
|
//! fires it as an ACP ext method (`x.ai/btw`) that bypasses the prompt queue.
|
|
|
|
use crate::app::actions::Action;
|
|
use crate::slash::command::{CommandExecCtx, CommandResult, SlashCommand};
|
|
|
|
pub struct BtwCommand;
|
|
|
|
impl SlashCommand for BtwCommand {
|
|
fn name(&self) -> &str {
|
|
"btw"
|
|
}
|
|
|
|
fn description(&self) -> &str {
|
|
"Ask a side question without interrupting"
|
|
}
|
|
|
|
fn session_scoped(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn usage(&self) -> &str {
|
|
"/btw <question>"
|
|
}
|
|
|
|
fn takes_args(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn args_required(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn arg_placeholder(&self) -> Option<&str> {
|
|
Some("<question>")
|
|
}
|
|
|
|
fn run(&self, _ctx: &mut CommandExecCtx, args: &str) -> CommandResult {
|
|
CommandResult::Action(Action::SendBtw(args.trim().to_string()))
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use crate::slash::command::SlashCommand;
|
|
|
|
#[test]
|
|
fn available_in_minimal_by_default() {
|
|
assert!(BtwCommand.available_in_minimal());
|
|
}
|
|
}
|