Add selective agent filtering for sources configuration
Allow agents source to be a dict for selective filtering instead of just
bool/"required". This enables generators to specify exactly which agent
outputs to include in their transcript context.
New schema: `"agents": {"entities": true, "meetings": "required"}`
- Dict keys are agent names (system) or "app:topic" (app-namespaced)
- Values can be true, false, or "required"
- Empty dict means no agents, None/true means all agents
Changes:
- think/utils.py: Updated source_is_enabled/required for dict, added get_agent_filter()
- think/cluster.py: Added _filename_to_agent_key() and _agent_matches_filter()
helpers, updated all cluster functions to accept dict-valued agents
- think/agents.py: Updated assemble_inputs() to pass agent filter through
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>