File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # sheesh-rs / aiassh / shaia
2+
3+ features a serem incluidas:
4+ - multiple connections
5+ - SHEESH.md
6+ - context hydratation
7+ - sudo mode
8+
9+ ### Multiple connections
10+ multiple connections enable the LLM to access multiple ssh connections and interop
11+ commands between then, this can be used to:
12+ - Configure multiple machines at one command
13+ - Context Hydration
14+
15+ ### SHEESH.md
16+ structure all the log of what has been done, how the server is structured and so on
17+
18+ ### context hydration
19+ while sheesh perform commands in the connections it should create entries and manipulate a
20+ context folder called .sheesh/
21+
22+ ### sudo mode
23+ should be able to not crash once sudo is requested
24+
25+ ### MCPs
26+ sheesh shuold have acces to MCPs that can:
27+ - Run a command
28+ - Read a file in the system
29+ - Create a file
30+
31+ ### Terminal issues
32+ - should be able to use keyboards that not ANSI
33+ - should be able to draw and interact to complex flows in the ssh connection
34+ - as render vim; helix; lazy-docker
35+
36+ ### Master / Slave mode
37+ sheesh should have a master slave mode where you can install a process on the
38+ server, then sheesh can connect through an cryptographic connection to perform
39+ actions more efficiently, such as:
40+ - create files
41+ - read files
42+ - and more powerups
43+
44+ ### Things to have a look
45+ - does open claw already do?
46+ - does people would use it (market fit)
47+ - how to monetize this?
48+ - master / slave mode should be paid?
49+ - multiple connections should be paid?
Original file line number Diff line number Diff line change @@ -300,10 +300,15 @@ impl LLMProvider for AnthropicProvider {
300300 }
301301 }
302302 Some ( "tool_use" ) => {
303+ // Use each block's own id/name/input — not the outer `id`/`name`/`input`
304+ // — so that multiple tool_use blocks in one response don't share the same id.
305+ let block_id = block[ "id" ] . as_str ( ) . unwrap_or ( "" ) . to_string ( ) ;
306+ let block_name = block[ "name" ] . as_str ( ) . unwrap_or ( "" ) . to_string ( ) ;
307+ let block_input = block[ "input" ] . clone ( ) ;
303308 assistant_blocks. push ( ContentBlock :: ToolUse {
304- id : id . clone ( ) ,
305- name : name . clone ( ) ,
306- input : input . clone ( ) ,
309+ id : block_id ,
310+ name : block_name ,
311+ input : block_input ,
307312 } ) ;
308313 }
309314 _ => { }
Original file line number Diff line number Diff line change @@ -148,16 +148,6 @@ impl Sheesh {
148148 self . send_context_to_llm ( ) ;
149149 return true ;
150150 }
151- // F4 — toggle terminal user lock (works regardless of focused panel)
152- crossterm:: event:: Event :: Key ( KeyEvent {
153- code : KeyCode :: F ( 4 ) ,
154- ..
155- } ) => {
156- if let Some ( t) = & mut self . terminal {
157- t. toggle_user_lock ( ) ;
158- }
159- return true ;
160- }
161151 // Mouse click — focus the panel that was clicked.
162152 // Do NOT return early for the terminal panel so the click also
163153 // reaches the terminal handler to start a text selection.
@@ -305,13 +295,7 @@ impl Sheesh {
305295 let hints: Vec < ( & str , & str ) > = match & self . state {
306296 AppState :: Listing => self . listing . key_hints ( ) ,
307297 AppState :: Connected { focus, .. } => {
308- let lock_hint = self . terminal . as_ref ( ) . map ( |t| {
309- if t. is_locked ( ) { ( "F4" , "unlock terminal" ) } else { ( "F4" , "lock terminal" ) }
310- } ) ;
311298 let mut hints = vec ! [ ( "F2" , "switch panel" ) , ( "F3" , "send context" ) ] ;
312- if let Some ( h) = lock_hint {
313- hints. push ( h) ;
314- }
315299 let panel_hints: Vec < ( & str , & str ) > = match focus {
316300 ConnectedFocus :: Terminal => self
317301 . terminal
You can’t perform that action at this time.
0 commit comments