According to the docs, you're supposed to call recast.crowdUpdate(delta) to move the agents along their given velocity, etc, and an internal "update" event is emitted.
This does not happen.
It's only after you call recast.crowdGetActiveAgents() that an update event is emitted. The two functions are documented as being independent and serving different purposes and there is no inference that crowdGetActiveAgents has to be called before the 'update' event is emitted, yet that is the case.
Even the demo project does this.