MCPcopy
hub / github.com/google/ax / New

Function New

internal/controller/controller.go:61–88  ·  view source on GitHub ↗

New creates a new controller instance.

(ctx context.Context, cfg Config)

Source from the content-addressed store, hash-verified

59
60// New creates a new controller instance.
61func New(ctx context.Context, cfg Config) (*Controller, error) {
62 // Initialize agent registry
63 registry := NewRegistry()
64
65 // Determine plan function
66 // If no planner builder is provided, use the default Gemini planner.
67 if cfg.PlannerBuilder == nil {
68 cfg.PlannerBuilder = func(ctx context.Context, r *Registry) (agent.Agent, error) {
69 return gemini.NewGeminiPlannerAgent(ctx, r, gemini.GeminiPlannerConfig{})
70 }
71 }
72
73 if cfg.EventLogBuilder == nil {
74 return nil, fmt.Errorf("event log builder is required")
75 }
76 eventLog, err := cfg.EventLogBuilder()
77 if err != nil {
78 return nil, fmt.Errorf("failed to create event log: %w", err)
79 }
80
81
82
83 return &Controller{
84 registry: registry,
85 eventLog: eventLog,
86 plannerBuilder: cfg.PlannerBuilder,
87 }, nil
88}
89
90func (d *Controller) tryResuming(ctx context.Context, req *proto.ExecRequest, el executor.EventLog, registry map[string]agent.Agent, handler ExecHandler) (history []*proto.Message, done bool, err error) {
91 events, err := el.Events(ctx, req.ConversationId)

Calls 2

NewGeminiPlannerAgentFunction · 0.92
NewRegistryFunction · 0.85