code: func NewAgentConfigWatcher(client *api.Client, proxyID string,
  	logger *log.Logger) (*AgentConfigWatcher, error) {
  	w := &AgentConfigWatcher{
  		client:  client,
  		proxyID: proxyID,
  		logger:  logger,
  		ch:      make(chan *Config),
  	}
  
  	// Setup watch plan for config
  	plan, err := watch.Parse(map[string]interface{}{
  		"type":       "agent_service",
  		"service_id": w.proxyID,
  	})
  	if err != nil {
  		return nil, err
  	}
  	w.plan = plan
  	w.plan.HybridHandler = w.handler
  	go w.plan.RunWithClientAndLogger(w.client, w.logger)
  	return w, nil
  }
docs: // NewAgentConfigWatcher creates an AgentConfigWatcher.