refactor(agent): remove globalCtx field and improve event setup

林玮 (Jade Lin) created

- Remove globalCtx field from agent struct
- Refactor setupEvents to accept context parameter directly

Change summary

internal/llm/agent/agent.go | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Detailed changes

internal/llm/agent/agent.go 🔗

@@ -66,7 +66,6 @@ type Service interface {
 }
 
 type agent struct {
-	globalCtx    context.Context
 	cleanupFuncs []func()
 
 	*pubsub.Broker[AgentEvent]
@@ -231,7 +230,6 @@ func NewAgent(
 	}
 
 	a := &agent{
-		globalCtx:           ctx,
 		Broker:              pubsub.NewBroker[AgentEvent](),
 		agentCfg:            agentCfg,
 		provider:            agentProvider,
@@ -246,7 +244,7 @@ func NewAgent(
 		baseTools:           csync.NewLazyMap(baseToolsFn),
 		promptQueue:         csync.NewMap[string, []string](),
 	}
-	a.setupEvents()
+	a.setupEvents(ctx)
 	return a, nil
 }
 
@@ -1057,8 +1055,8 @@ func (a *agent) getToolByName(name string) (tools.BaseTool, bool) {
 	return tool, ok
 }
 
-func (a *agent) setupEvents() {
-	ctx, cancel := context.WithCancel(a.globalCtx)
+func (a *agent) setupEvents(ctx context.Context) {
+	ctx, cancel := context.WithCancel(ctx)
 
 	go func() {
 		for event := range SubscribeMCPEvents(ctx) {