What is a compound request?
A single user message containing multiple independent intents. Example:Detection heuristics
CompoundRequestOrchestrator.IsCompoundRequest() looks for:
- sequential indicators (
then,after that,followed by) - multiple action verbs (for example
create,write,read,delete)
Decomposition flow
When compound intent is detected and a model client is available, Vitruvian asks the model to return a JSON array of self-contained tasks.Why host-level decomposition is important
Compound handling is orchestration-level, not module-level:- modules stay focused on one domain
- new plugins work without special compound logic
- governance and security checks still apply per sub-task
Fallback behavior
- no model client: guidance fallback path
- invalid JSON from model: fallback to single-request handling
- cancellation: propagated correctly through decomposition and execution
Practical advice
If decomposition quality is weak, rewrite your request with clearer separators such asthen, and then, or after that.