Skip to main content

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 === true evaluate TEXT_DELTA chunks
  • Guardrails with config.evaluateToolCalls === true evaluate 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.maxStreamingEvaluations per guardrail

Actions:

Parameters​

service​

Single guardrail or array of guardrails

IGuardrailService | IGuardrailService[] | undefined

context​

GuardrailContext

Conversation context for policy decisions

stream​

AsyncGenerator<AgentOSResponse, void, undefined>

Source response stream to wrap

options​

GuardrailOutputOptions

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;
}