feature: Add "!cmd" user shell execution

- protocol: add Op::RunUserShellCommand to model a user-initiated one-off command
- core: handle new Op by spawning a cancellable task that runs the command using the user’s default shell; stream output via ExecCommand* events; send TaskStarted/TaskComplete; track as current_task so Interrupt works
- tui: detect leading '!' in composer submission and dispatch Op::RunUserShellCommand instead of sending a user message

No changes to sandbox env var behavior; uses existing exec pipeline and event types.
This commit is contained in:
Abhishek Bhardwaj
2025-09-12 22:33:09 -07:00
parent e85742635f
commit 2f0bc514b7
10 changed files with 352 additions and 17 deletions

View File

@@ -278,6 +278,7 @@ impl EventProcessor for EventProcessorWithHumanOutput {
command,
cwd,
parsed_cmd: _,
is_user_shell_command: _,
}) => {
self.call_id_to_command.insert(
call_id,