@@ -37,6 +37,8 @@ class Runner {
3737 let currentAgent = startingAgent ;
3838 let messages = [ ] ;
3939 let finalOutput = null ;
40+ const inputGuardrailResults = [ ] ;
41+ const outputGuardrailResults = [ ] ;
4042
4143 // Validate provider configuration
4244 currentAgent . llmProvider . validateConfig ( ) ;
@@ -48,19 +50,11 @@ class Runner {
4850 messages = [ ...input ] ;
4951 }
5052
51- // Run input guardrails inline
52- const inputGuardrailResults = [ ] ;
53+ // Run input guardrails
5354 for ( const guardrail of currentAgent ?. guardrails ?. input || [ ] ) {
54- console . log ( `Running input guardrail: ${ guardrail . name } ` ) ;
55- try {
56- const result = await guardrail . validate ( currentAgent , messages , context ) ;
57- inputGuardrailResults . push ( result ) ;
58- if ( result . output && result . output . tripwireTriggered ) {
59- throw new Error ( `Input guardrail ${ guardrail . name } triggered: ${ JSON . stringify ( result . output ) } ` ) ;
60- }
61- } catch ( error ) {
62- console . error ( `Error running input guardrail: ${ error . message } ` ) ;
63- throw error ;
55+ const result = await guardrail . run ( currentAgent , messages , context ) ;
56+ if ( result ) {
57+ inputGuardrailResults . push ( guardrail . name ) ;
6458 }
6559 }
6660
@@ -112,6 +106,9 @@ class Runner {
112106
113107 // Check for tool calls
114108 if ( assistantMessage . tool_calls && assistantMessage . tool_calls . length > 0 ) {
109+
110+ // console.log("Tool calls detected:", assistantMessage.tool_calls);
111+
115112 for ( const toolCall of assistantMessage . tool_calls ) {
116113 const { name, arguments : args } = toolCall . function ;
117114
@@ -178,22 +175,6 @@ class Runner {
178175 // No tool calls, this is a final output
179176 finalOutput = assistantMessage . content ;
180177
181- // Run output guardrails inline
182- const outputGuardrailResults = [ ] ;
183- for ( const guardrail of currentAgent ?. guardrails ?. output || [ ] ) {
184- console . log ( `Running output guardrail: ${ guardrail . name } ` ) ;
185- try {
186- const result = await guardrail . validate ( currentAgent , finalOutput , context ) ;
187- outputGuardrailResults . push ( result ) ;
188- if ( result . output && result . output . tripwireTriggered ) {
189- throw new Error ( `Output guardrail ${ guardrail . name } triggered: ${ JSON . stringify ( result . output ) } ` ) ;
190- }
191- } catch ( error ) {
192- console . error ( `Error running output guardrail: ${ error . message } ` ) ;
193- throw error ;
194- }
195- }
196-
197178 // If we have a final output, we're done
198179 break ;
199180 }
@@ -204,23 +185,14 @@ class Runner {
204185 throw new Error ( `Max turns (${ maxTurns } ) exceeded` ) ;
205186 }
206187
207- // Run output guardrails inline (final)
208- const outputGuardrailResults = [ ] ;
188+ // Run output guardrails
209189 for ( const guardrail of currentAgent ?. guardrails ?. output || [ ] ) {
210- console . log ( `Running output guardrail: ${ guardrail . name } ` ) ;
211- try {
212- const result = await guardrail . validate ( currentAgent , finalOutput , context ) ;
213- outputGuardrailResults . push ( result ) ;
214- if ( result . output && result . output . tripwireTriggered ) {
215- throw new Error ( `Output guardrail ${ guardrail . name } triggered: ${ JSON . stringify ( result . output ) } ` ) ;
216- }
217- } catch ( error ) {
218- console . error ( `Error running output guardrail: ${ error . message } ` ) ;
219- throw error ;
190+ const result = await guardrail . run ( currentAgent , finalOutput , context ) ;
191+ if ( result ) {
192+ outputGuardrailResults . push ( guardrail . name ) ;
220193 }
221194 }
222195
223-
224196 const result = new RunResult ( {
225197 input,
226198 messages,
0 commit comments