Mouse selection, copy/paste, yield_to_user fixes

- Mouse text selection with highlight rendering in panes
- OSC 52 clipboard copy on selection, middle-click paste via tmux buffer
- Bracketed paste support (Event::Paste)
- yield_to_user: no tool result appended, ends turn immediately
- yield_to_user: no parameters, just a control signal
- Drop arboard dependency, use crossterm OSC 52 + tmux for clipboard

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
This commit is contained in:
ProofOfConcept 2026-04-09 18:08:07 -04:00 committed by Kent Overstreet
parent 7dd9daa2b9
commit a596e007b2
9 changed files with 246 additions and 22 deletions

View file

@ -33,14 +33,12 @@ pub(super) fn tools() -> [super::Tool; 3] {
})) },
Tool { name: "yield_to_user",
description: "Wait for user input before continuing. The only way to enter a waiting state.",
parameters_json: r#"{"type":"object","properties":{"message":{"type":"string","description":"Optional status message"}}}"#,
handler: Arc::new(|agent, v| Box::pin(async move {
let msg = v.get("message").and_then(|v| v.as_str()).unwrap_or("Waiting for input.");
parameters_json: r#"{"type":"object","properties":{}}"#,
handler: Arc::new(|agent, _| Box::pin(async move {
if let Some(agent) = agent {
let mut a = agent.state.lock().await;
a.pending_yield = true;
agent.state.lock().await.pending_yield = true;
}
Ok(format!("Yielding. {}", msg))
Ok(String::new())
})) },
]
}