Skip to content

Commit faabad7

Browse files
authored
fix(conversation): send fewer carriage returns after a user message (#11)
* fix(conversation): send fewer carriage returns after a user message
1 parent 1f26946 commit faabad7

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
{
22
"editor.formatOnSave": true,
3-
"editor.defaultFormatter": "esbenp.prettier-vscode"
3+
"editor.defaultFormatter": "esbenp.prettier-vscode",
4+
"[go]": {
5+
"editor.defaultFormatter": "golang.go"
6+
}
47
}

lib/screentracker/conversation.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,15 +289,23 @@ func (c *Conversation) writeMessageWithConfirmation(ctx context.Context, message
289289

290290
// wait for the screen to change after the carriage return is written
291291
screenBeforeCarriageReturn := c.cfg.AgentIO.ReadScreen()
292+
lastCarriageReturnTime := time.Time{}
292293
if err := util.WaitFor(ctx, util.WaitTimeout{
293294
Timeout: 15 * time.Second,
294295
MinInterval: 25 * time.Millisecond,
295296
}, func() (bool, error) {
296-
if _, err := c.cfg.AgentIO.Write([]byte("\r")); err != nil {
297-
return false, xerrors.Errorf("failed to write carriage return: %w", err)
297+
// we don't want to spam additional carriage returns because the agent may process them
298+
// (aider does this), but we do want to retry sending one if nothing's
299+
// happening for a while
300+
if time.Since(lastCarriageReturnTime) >= 3*time.Second {
301+
lastCarriageReturnTime = time.Now()
302+
if _, err := c.cfg.AgentIO.Write([]byte("\r")); err != nil {
303+
return false, xerrors.Errorf("failed to write carriage return: %w", err)
304+
}
298305
}
299306
time.Sleep(25 * time.Millisecond)
300307
screen := c.cfg.AgentIO.ReadScreen()
308+
301309
return screen != screenBeforeCarriageReturn, nil
302310
}); err != nil {
303311
return xerrors.Errorf("failed to wait for processing to start: %w", err)

0 commit comments

Comments
 (0)