]> git.giacomolli.uk - onechat/blobdiff - daemon.go
Show the subagents in the clients
[onechat] / daemon.go
index 2a23dc28a4405380137213b21f9c25566c575844..a4041f1b10ff7feb555972aca563662c128ee2da 100644 (file)
--- a/daemon.go
+++ b/daemon.go
@@ -82,6 +82,11 @@ func daemon(ctx context.Context, out io.Writer) (err error) {
                err = errors.Join(err, memory.Close())
        }()
 
                err = errors.Join(err, memory.Close())
        }()
 
+       subagents := newSubagents(filepath.Join(agent.dir, subagentDirName), time.Now, subagentNameRandom)
+       defer func() {
+               err = errors.Join(err, subagents.Close())
+       }()
+
        listener, err := daemonListenSocket(socket)
        if err != nil {
                return err
        listener, err := daemonListenSocket(socket)
        if err != nil {
                return err
@@ -102,7 +107,7 @@ func daemon(ctx context.Context, out io.Writer) (err error) {
        }
 
        return daemonServe(ctx, listener, telegram, func(notify func(Event)) (*TurnLoop, error) {
        }
 
        return daemonServe(ctx, listener, telegram, func(notify func(Event)) (*TurnLoop, error) {
-               return newTurnLoop(agent, memory, client, time.Now, notify)
+               return newTurnLoop(agent, memory, subagents, client, time.Now, notify)
        })
 }
 
        })
 }
 
@@ -354,6 +359,13 @@ func daemonRunRequest(l *TurnLoop, request SocketRequest) error {
                }
 
                return nil
                }
 
                return nil
+       case "stop":
+               found, err := l.StopSubagent(request.Text)
+               if err == nil && !found {
+                       err = fmt.Errorf("no subagent %s runs", request.Text)
+               }
+
+               return err
        default:
                return fmt.Errorf("unknown request %q", request.Type)
        }
        default:
                return fmt.Errorf("unknown request %q", request.Type)
        }