@@ -15,7 +15,8 @@ defmodule AgentForge.Tools do
1515 @ doc """
1616 Registers a tool function with a given name.
1717 """
18- def register ( name , function , registry \\ __MODULE__ ) when is_binary ( name ) and is_function ( function , 1 ) do
18+ def register ( name , function , registry \\ __MODULE__ )
19+ when is_binary ( name ) and is_function ( function , 1 ) do
1920 GenServer . call ( registry , { :register , name , function } )
2021 end
2122
@@ -49,17 +50,21 @@ defmodule AgentForge.Tools do
4950 { :ok , tool_fn } ->
5051 try do
5152 result = tool_fn . ( signal . data )
52- meta = Map . merge ( signal . meta , % {
53- tool: name ,
54- parent_trace_id: signal . meta . trace_id ,
55- last_tool: name
56- } )
53+
54+ meta =
55+ Map . merge ( signal . meta , % {
56+ tool: name ,
57+ parent_trace_id: signal . meta . trace_id ,
58+ last_tool: name
59+ } )
60+
5761 { { :emit , Signal . new ( :tool_result , result , meta ) } , state }
5862 rescue
5963 e ->
6064 meta = Map . merge ( signal . meta , % { tool: name } )
6165 { { :emit , Signal . new ( :error , "Tool error: #{ Exception . message ( e ) } " , meta ) } , state }
6266 end
67+
6368 { :error , reason } ->
6469 meta = Map . merge ( signal . meta , % { tool: name } )
6570 { { :emit , Signal . new ( :error , reason , meta ) } , state }
@@ -72,34 +77,40 @@ defmodule AgentForge.Tools do
7277 """
7378 def execute_pipeline ( tool_names , registry \\ __MODULE__ ) when is_list ( tool_names ) do
7479 fn signal , state ->
75- results = Enum . reduce_while ( tool_names , [ ] , fn name , acc ->
76- case get ( name , registry ) do
77- { :ok , tool_fn } ->
78- try do
79- result = tool_fn . ( signal . data )
80- meta = Map . merge ( signal . meta , % {
81- tool: name ,
82- last_tool: name ,
83- parent_trace_id: signal . meta . trace_id
84- } )
85- new_signal = Signal . new ( :tool_result , result , meta )
86- { :cont , [ new_signal | acc ] }
87- rescue
88- e ->
89- meta = Map . merge ( signal . meta , % { tool: name } )
90- signal = Signal . new ( :error , "Tool error: #{ Exception . message ( e ) } " , meta )
91- { :halt , { :error , signal } }
92- end
93- { :error , reason } ->
94- meta = Map . merge ( signal . meta , % { tool: name } )
95- signal = Signal . new ( :error , reason , meta )
96- { :halt , { :error , signal } }
97- end
98- end )
80+ results =
81+ Enum . reduce_while ( tool_names , [ ] , fn name , acc ->
82+ case get ( name , registry ) do
83+ { :ok , tool_fn } ->
84+ try do
85+ result = tool_fn . ( signal . data )
86+
87+ meta =
88+ Map . merge ( signal . meta , % {
89+ tool: name ,
90+ last_tool: name ,
91+ parent_trace_id: signal . meta . trace_id
92+ } )
93+
94+ new_signal = Signal . new ( :tool_result , result , meta )
95+ { :cont , [ new_signal | acc ] }
96+ rescue
97+ e ->
98+ meta = Map . merge ( signal . meta , % { tool: name } )
99+ signal = Signal . new ( :error , "Tool error: #{ Exception . message ( e ) } " , meta )
100+ { :halt , { :error , signal } }
101+ end
102+
103+ { :error , reason } ->
104+ meta = Map . merge ( signal . meta , % { tool: name } )
105+ signal = Signal . new ( :error , reason , meta )
106+ { :halt , { :error , signal } }
107+ end
108+ end )
99109
100110 case results do
101111 { :error , error_signal } ->
102112 { { :emit , error_signal } , state }
113+
103114 signals when is_list ( signals ) ->
104115 { { :emit_many , Enum . reverse ( signals ) } , state }
105116 end
0 commit comments