]> git.giacomolli.uk - onechat/blob - daemon_start_helper_test.go
Show the subagents in the clients
[onechat] / daemon_start_helper_test.go
1 package main
2
3 import (
4         "context"
5         "path/filepath"
6         "testing"
7
8         "github.com/stretchr/testify/require"
9 )
10
11 // daemonStartTestWithBot is daemonStartTest with bot, which can be nil.
12 func daemonStartTestWithBot(t *testing.T, server *ModelFake, bot *TelegramBot) string {
13         t.Helper()
14
15         dir := t.TempDir()
16         agent, err := openAgent(filepath.Join(dir, daemonAgentDirName))
17         require.NoError(t, err)
18
19         agent.config.Workdir = t.TempDir()
20         clock := newTestClock()
21         memory, err := openMemory(t.Context(), agent.dir, clock.Now, newFakeSummarizer())
22         require.NoError(t, err)
23
24         socket := filepath.Join(dir, socketFileName)
25         listener, err := daemonListenSocket(socket)
26         require.NoError(t, err)
27
28         client := newModelClient(server.URL, ModelAPIKey(modelTestKey), agent.CacheKey(), filepath.Join(agent.dir, "usage.jsonl"))
29         ctx, cancel := context.WithCancel(t.Context())
30         done := make(chan error)
31         go func() {
32                 done <- daemonServe(ctx, listener, bot, func(notify func(Event)) (*TurnLoop, error) {
33                         return newTurnLoop(agent, memory, newTestSubagents(t), client, clock.Now, notify)
34                 })
35         }()
36
37         t.Cleanup(func() {
38                 cancel()
39                 require.NoError(t, <-done)
40                 require.NoError(t, memory.Close())
41         })
42
43         return socket
44 }