Work through TODO fixes
This commit is contained in:
@@ -625,18 +625,18 @@ func (c *Child) InjectAsOrchestrator(b []byte) error {
|
||||
}
|
||||
|
||||
// writeInput is the shared PTY write path used by both injection
|
||||
// flavours. Each Enter byte (CR or LF) is split onto its own write
|
||||
// with a brief delay so TUI agents with paste-detection (claude,
|
||||
// flavours. Agent panes split each Enter byte (CR or LF) onto its own
|
||||
// write with a brief delay so TUI agents with paste-detection (claude,
|
||||
// codex, opencode) don't coalesce a trailing CR into the text that
|
||||
// preceded it. Without the split, `pty.Write([]byte("hello\r"))`
|
||||
// arrives at the agent as one read() and gets treated as multi-line
|
||||
// pasted content rather than "key Enter".
|
||||
// preceded it. Raw terminals and command panes receive the original
|
||||
// byte stream in one write; otherwise a multiline paste pays the agent
|
||||
// workaround's delay once per line.
|
||||
func (c *Child) writeInput(b []byte) error {
|
||||
pty := c.PTY()
|
||||
if pty == nil {
|
||||
return errors.New("child has no pty")
|
||||
}
|
||||
pieces := splitOnEnter(b)
|
||||
pieces := inputWritePieces(c.Kind, b)
|
||||
if len(pieces) <= 1 {
|
||||
_, err := pty.Write(b)
|
||||
return err
|
||||
@@ -652,6 +652,13 @@ func (c *Child) writeInput(b []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func inputWritePieces(kind ChildKind, b []byte) [][]byte {
|
||||
if kind != KindAgent {
|
||||
return [][]byte{b}
|
||||
}
|
||||
return splitOnEnter(b)
|
||||
}
|
||||
|
||||
func mintIdentity() string {
|
||||
var buf [12]byte
|
||||
_, _ = rand.Read(buf[:])
|
||||
|
||||
Reference in New Issue
Block a user