// fill joins lines of write until the text has about size bytes.
func (g *ProbeWriter) fill(write func() string, size int) string {
var text strings.Builder
+
for text.Len() < size {
if text.Len() > 0 {
text.WriteByte(' ')
// toolCall returns a tool name and its JSON input of about size bytes.
func (g *ProbeWriter) toolCall(size int) string {
name := g.pick([]string{"shell", "read", "write", "edit"})
+
var input map[string]string
+
switch name {
case "shell":
input = map[string]string{"command": "grep -n '" + g.pick(probeThings) + "' " + g.pick(probeFiles)}