Optional evaluateEvaluate output from an observed agent.
Called when an observed agent (per observeAgentIds) emits a chunk. The evaluation timing depends on IGuardrailService.config:
evaluateStreamingChunks: true: Called for each TEXT_DELTAevaluateStreamingChunks: false: Called only for FINAL_RESPONSECross-agent context and chunk to evaluate
Evaluation result, or null to allow without action
trueOptional evaluateEvaluate user input before orchestration.
Called once per request before the orchestration pipeline starts. Use this to validate, sanitize, or block user messages.
Input and context to evaluate
Evaluation result, or null to allow without action
BLOCK to prevent the request from being processedSANITIZE with modifiedText to clean the inputnull or ALLOW to let the request throughOptional evaluateEvaluate agent output before streaming to client.
Called for each chunk of a guarded output stream (the turn's, and the
continuation after an external tool result) that carries
isFinal: true (the FINAL_RESPONSE, an ERROR the turn yields), for each
TEXT_DELTA chunk when GuardrailConfig.evaluateStreamingChunks is
set (real-time filtering), and for each TOOL_CALL_REQUEST chunk when
GuardrailConfig.evaluateToolCalls is set. Other chunks are not
passed to it, nor is the ERROR that processRequest() yields from its own
catch.
Response chunk and context to evaluate
Evaluation result, or null to allow without action
BLOCK to immediately terminate the stream with an error chunk, or
with a FINAL_RESPONSE holding replacementText when the result carries a
non-empty oneSANITIZE with modifiedText to redact/modify content; on a
TOOL_CALL_REQUEST chunk it is applied as BLOCKOptional observeAgent IDs this guardrail observes.
[] or undefined: Observe all agents in the agency// Observe specific workers
observeAgentIds = ['worker-1', 'worker-2'];
// Observe all agents
observeAgentIds = [];
Optional canWhether this guardrail can interrupt other agents' streams.
When true:
When false (default):
false
Optional idA stable id for this guard. A required guard is named by it (AgentOSConfig.requiredGuardrails), and it travels
with every verdict as metadata.guardrailId. Without one, a registered guard is known by its descriptor's id.
Optional stagesThe stages this guard evaluates, for a guard whose methods say more than its configuration: one that implements both methods but runs on one stage declares that stage. A required guard is held to what it declares, and a stage it does not declare is reported as missing instead of passing on the method's existence. Without it, a stage counts as covered when its method exists.
Optional configConfiguration for evaluation behavior. Controls streaming vs final-only evaluation and rate limiting.
Cross-agent guardrail service for multi-agent supervision.
Extends IGuardrailService to enable observation and intervention in other agents' output streams. Use this for:
Example: Quality gate guardrail
Example: Selective agent monitoring