Skip to content

Commit e2a9a5b

Browse files
committed
fix tool_id bug
1 parent 89f2772 commit e2a9a5b

3 files changed

Lines changed: 57 additions & 19 deletions

File tree

docs/ideas.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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?

src/llm/anthropic.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff 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
_ => {}

src/main.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)