Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
32 lines
723 B
Go
32 lines
723 B
Go
package agentruntime
|
|
|
|
import (
|
|
"encoding/json"
|
|
"sync"
|
|
)
|
|
|
|
// ProcessNDJSONWriter serializes writes to a process stdio connection.
|
|
type ProcessNDJSONWriter struct {
|
|
conn ProcessConnection
|
|
sendMu sync.Mutex
|
|
}
|
|
|
|
// NewProcessNDJSONWriter constructs a locked writer for newline-delimited JSON-RPC frames.
|
|
func NewProcessNDJSONWriter(conn ProcessConnection) ProcessNDJSONWriter {
|
|
return ProcessNDJSONWriter{conn: conn}
|
|
}
|
|
|
|
func (w *ProcessNDJSONWriter) SendJSON(payload any) error {
|
|
data, err := json.Marshal(payload)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return w.SendLine(append(data, '\n'))
|
|
}
|
|
|
|
func (w *ProcessNDJSONWriter) SendLine(data []byte) error {
|
|
w.sendMu.Lock()
|
|
defer w.sendMu.Unlock()
|
|
return w.conn.Send(data)
|
|
}
|