agent: Changing to use nested JSON for watches
agent: First pass at agent-based watches
agent: Refactor script invoke