]> git.giacomolli.uk - onechat/blobdiff - turn.go
Submit root events through the local socket
[onechat] / turn.go
diff --git a/turn.go b/turn.go
index c08e94a0eed7d94a22e787d7bbaf97a69ce89289..01d6b7b61d98d51700308739c71a208f1030f872 100644 (file)
--- a/turn.go
+++ b/turn.go
@@ -16,7 +16,9 @@ import (
 // run. ID is the ID of a logged message. Source names the client that sent a
 // user message, such as terminal or telegram, so that each client can show the
 // messages of the others, or the subagent of a report. Status tells how the run
-// of a report ended: finished, stopped, or failed.
+// of a report ended: finished, stopped, or failed. A private notify receipt
+// uses ID for its queue sequence and Status for accepted or duplicate, not
+// processed.
 type Event struct {
        Kind   string `json:"kind"`
        ID     int    `json:"id,omitempty"`
@@ -296,12 +298,23 @@ func (l *TurnLoop) Run(ctx context.Context) error {
        }
 
        for {
-               for ctx.Err() == nil && l.waiting() {
+               for ctx.Err() == nil {
                        err := l.failed()
                        if err != nil {
                                return fmt.Errorf("check turn loop failure: %w", err)
                        }
 
+                       if l.messages != nil {
+                               err = l.messages.Notifications(l)
+                               if err != nil {
+                                       return fmt.Errorf("prepare external events: %w", err)
+                               }
+                       }
+
+                       if !l.waiting() {
+                               break
+                       }
+
                        err = l.turn(ctx)
                        if err != nil {
                                return fmt.Errorf("run turn: %w", err)