X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/6d96a69d33eb634f61f809001aca19ae57113180..cb514b662bcf9d90b2cf02789c989f777d774d3f:/daemon.go?ds=inline diff --git a/daemon.go b/daemon.go index 2a23dc2..a4041f1 100644 --- 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()) }() + 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 @@ -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 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 + 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) }