Function: wrapOutputGuardrails()
wrapOutputGuardrails(
service,context,stream,options):AsyncGenerator<AgentOSResponse,void,undefined>
Defined in: packages/agentos/src/safety/guardrails/guardrailDispatcher.ts:289
Wrap a response stream with guardrail filtering.
Creates an async generator that evaluates each chunk through registered guardrails before yielding to the client. Supports both real-time streaming evaluation and final-only evaluation based on guardrail configuration.
Evaluation Strategy:
- Guardrails with
config.evaluateStreamingChunks === trueevaluate TEXT_DELTA chunks - Guardrails with
config.evaluateToolCalls === trueevaluate TOOL_CALL_REQUEST chunks - All guardrails evaluate the chunks that carry
isFinal: true(the FINAL_RESPONSE, an ERROR); other chunks pass through unevaluated - Rate limiting via
config.maxStreamingEvaluationsper guardrail
Actions:
- GuardrailAction.BLOCK - Terminates stream immediately with error chunk
- GuardrailAction.SANITIZE - Replaces chunk content with
modifiedText; on a TOOL_CALL_REQUEST chunk it is applied as a BLOCK - GuardrailAction.FLAG / GuardrailAction.ALLOW - Passes through
Parameters
service
Single guardrail or array of guardrails
IGuardrailService | IGuardrailService[] | undefined
context
Conversation context for policy decisions
stream
AsyncGenerator<AgentOSResponse, void, undefined>
Source response stream to wrap
options
Stream options and input evaluations to attach
Returns
AsyncGenerator<AgentOSResponse, void, undefined>
Wrapped stream with guardrail filtering applied
Example
// Wrap output stream with PII redaction
const safeStream = wrapOutputGuardrails(
[piiRedactor, contentFilter],
guardrailContext,
orchestratorStream,
{ streamId: 'stream-123', inputEvaluations }
);
for await (const chunk of safeStream) {
// Chunks are filtered/sanitized before reaching here
yield chunk;
}