Implement background command support for bash tool
- Added `background` option to `bash` tool to allow long-lived commands to run without blocking the turn. - Introduced `bash_status` tool to check the status and output of background commands. - Added `bash_stop` tool to explicitly stop running background commands. - Updated command parsing to handle `/bash` commands for listing, stopping individual, and stopping all background commands. - Enhanced session management to reap stale background commands on agent shutdown. - Updated UI to reflect background command status and allow user interruption via ctrl-c. - Added tests for background command functionality and command parsing. - Documented new features and usage in background-bash.md.
This commit is contained in:
1 parent
deeb138cd9
commit
76043aeb38
12 files changed
+724
-18
No files matched your search
@@ -158,3 +158,22 @@ test('/registry add with no name returns usage rather than fetching anything', (
|
||||
test('a bare word after /registry is treated as a search', () => {
|
||||
expect(parseCommand('/registry migration')).toEqual({ type: 'registry', action: 'search', arg: 'migration' });
|
||||
});
|
||||
|
||||
test('/bash with no verb lists background commands', () => {
|
||||
expect(parseCommand('/bash')).toEqual({ type: 'bash', action: 'list' });
|
||||
expect(parseCommand('/bash list')).toEqual({ type: 'bash', action: 'list' });
|
||||
});
|
||||
|
||||
test('/bash stop carries the handle', () => {
|
||||
expect(parseCommand('/bash stop 3')).toEqual({ type: 'bash', action: 'stop', arg: '3' });
|
||||
});
|
||||
|
||||
test('/bash stop all stops everything', () => {
|
||||
expect(parseCommand('/bash stop all')).toEqual({ type: 'bash', action: 'stop-all' });
|
||||
});
|
||||
|
||||
test('/bash with an unknown verb returns usage', () => {
|
||||
const out = parseCommand('/bash frobnicate');
|
||||
expect(out.type).toBe('info');
|
||||
expect((out as { text: string }).text).toContain('usage: /bash');
|
||||
});
|
||||
Reference in new issue
Block a user