on main help sign in
perf: init coder agent in a goroutine (#1289)

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>

commitf172aaa25faba5a9dbc2cbd719c5851f271ec0dc authorCarlos Alexandro Becker <caarlos0@users.noreply.github.com> dateMon 27 Oct 2025, 10:29 (1 year ago) parent342bc9e
2 files changed+25−10
internal/agent/coordinator.go+20−5 internal/app/app.go+5−5
internal/agent/coordinator.go+20−5
@@ -289,11 +289,26 @@ func (c *coordinator) buildAgent(ctx context.Context, prompt *prompt.Prompt, age
289289 }
290290
291291 largeProviderCfg, _ := c.cfg.Providers.Get(large.ModelCfg.Provider)
292− tools, err := c.buildTools(ctx, agent)
293− if err != nil {
294− return nil, err
295− }
296− return NewSessionAgent(SessionAgentOptions{large, small, largeProviderCfg.SystemPromptPrefix, systemPrompt, c.cfg.Options.DisableAutoSummarize, c.permissions.SkipRequests(), c.sessions, c.messages, tools}), nil
292+ result := NewSessionAgent(SessionAgentOptions{
293+ large,
294+ small,
295+ largeProviderCfg.SystemPromptPrefix,
296+ systemPrompt,
297+ c.cfg.Options.DisableAutoSummarize,
298+ c.permissions.SkipRequests(),
299+ c.sessions,
300+ c.messages,
301+ nil,
302+ })
303+ go func() {
304+ tools, err := c.buildTools(ctx, agent)
305+ if err != nil {
306+ slog.Error("could not init agent tools", "err", err)
307+ return
308+ }
309+ result.SetTools(tools)
310+ }()
311+ return result, nil
297312}
298313
299314func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fantasy.AgentTool, error) {
internal/app/app.go+5−5
@@ -86,12 +86,12 @@ func New(ctx context.Context, conn *sql.DB, cfg *config.Config) (*App, error) {
8686 app.cleanupFuncs = append(app.cleanupFuncs, conn.Close)
8787
8888 // TODO: remove the concept of agent config, most likely.
89− if cfg.IsConfigured() {
90− if err := app.InitCoderAgent(ctx); err != nil {
91− return nil, fmt.Errorf("failed to initialize coder agent: %w", err)
92− }
93− } else {
89+ if !cfg.IsConfigured() {
9490 slog.Warn("No agent configuration found")
91+ return app, nil
92+ }
93+ if err := app.InitCoderAgent(ctx); err != nil {
94+ return nil, fmt.Errorf("failed to initialize coder agent: %w", err)
9595 }
9696 return app, nil
9797}