Skip to content

Commit c3da845

Browse files
committed
Refactor code for improved readability and consistency in formatting across multiple files
1 parent a512c00 commit c3da845

File tree

16 files changed

+418
-286
lines changed

16 files changed

+418
-286
lines changed

lib/agent_forge/config.ex

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ defmodule AgentForge.Config do
3636
{:ok, handlers} ->
3737
# Return an executable flow function
3838
Runtime.configure(handlers)
39+
3940
{:error, reason} ->
4041
fn _signal -> {:error, reason} end
4142
end
43+
4244
{:error, reason} ->
4345
fn _signal -> {:error, reason} end
4446
end
@@ -71,6 +73,7 @@ defmodule AgentForge.Config do
7173
String.starts_with?(String.trim(content), "{") ->
7274
# Looks like JSON
7375
parse_json(content)
76+
7477
true ->
7578
# Assume YAML
7679
parse_yaml(content)
@@ -131,22 +134,31 @@ defmodule AgentForge.Config do
131134
defp build_transform_step(step) do
132135
fn_def = step["fn"] || step[:fn]
133136

134-
transform_fn = case fn_def do
135-
"upcase" -> &String.upcase/1
136-
"downcase" -> &String.downcase/1
137-
"reverse" -> &String.reverse/1
138-
custom when is_binary(custom) ->
139-
# Safely handle custom function strings
140-
fn data ->
141-
try do
142-
{result, _} = Code.eval_string(custom, [data: data])
143-
result
144-
rescue
145-
e -> raise "Transform evaluation error: #{Exception.message(e)}"
137+
transform_fn =
138+
case fn_def do
139+
"upcase" ->
140+
&String.upcase/1
141+
142+
"downcase" ->
143+
&String.downcase/1
144+
145+
"reverse" ->
146+
&String.reverse/1
147+
148+
custom when is_binary(custom) ->
149+
# Safely handle custom function strings
150+
fn data ->
151+
try do
152+
{result, _} = Code.eval_string(custom, data: data)
153+
result
154+
rescue
155+
e -> raise "Transform evaluation error: #{Exception.message(e)}"
156+
end
146157
end
147-
end
148-
_ -> raise "Invalid transform function: #{inspect(fn_def)}"
149-
end
158+
159+
_ ->
160+
raise "Invalid transform function: #{inspect(fn_def)}"
161+
end
150162

151163
Primitives.transform(transform_fn)
152164
end
@@ -174,10 +186,12 @@ defmodule AgentForge.Config do
174186
data: signal.data,
175187
signal: signal,
176188
state: state,
177-
String: String # Allow String module in conditions
189+
# Allow String module in conditions
190+
String: String
178191
]
179192

180193
{result, _} = Code.eval_string(condition_def, bindings)
194+
181195
if is_boolean(result) do
182196
result
183197
else
@@ -207,7 +221,8 @@ defmodule AgentForge.Config do
207221
end
208222

209223
defp build_loop_step(step) do
210-
_items_def = step["items"] || step[:items] # Prefix with _ since it's not used yet
224+
# Prefix with _ since it's not used yet
225+
_items_def = step["items"] || step[:items]
211226
action_steps = step["action"] || step[:action] || []
212227

213228
unless is_list(action_steps) do

lib/agent_forge/flow.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ defmodule AgentForge.Flow do
6161
# Private functions
6262

6363
defp process_handlers(handlers, signal, state) do
64-
Enum.reduce_while(handlers, {:ok, signal, state}, fn handler, {:ok, current_signal, current_state} ->
64+
Enum.reduce_while(handlers, {:ok, signal, state}, fn handler,
65+
{:ok, current_signal, current_state} ->
6566
case process_handler(handler, current_signal, current_state) do
6667
{{:emit, new_signal}, new_state} ->
6768
{:cont, {:ok, new_signal, new_state}}

lib/agent_forge/runtime.ex

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ defmodule AgentForge.Runtime do
66
alias AgentForge.{Flow, Signal, Store, Debug}
77

88
@type runtime_options :: [
9-
debug: boolean(),
10-
name: String.t(),
11-
store_prefix: String.t(),
12-
store_name: atom()
13-
]
9+
debug: boolean(),
10+
name: String.t(),
11+
store_prefix: String.t(),
12+
store_name: atom()
13+
]
1414

1515
@doc """
1616
Executes a flow with the given signal and options.
@@ -36,14 +36,16 @@ defmodule AgentForge.Runtime do
3636
"Processed: test"
3737
"""
3838
@spec execute(Flow.flow(), Signal.t(), runtime_options()) ::
39-
{:ok, Signal.t() | term(), term()} | {:error, term()}
39+
{:ok, Signal.t() | term(), term()} | {:error, term()}
4040
def execute(flow, signal, opts \\ []) do
4141
opts = Keyword.merge([debug: false, name: "flow", store_prefix: "flow"], opts)
4242

4343
# Initialize store if needed
4444
initial_state =
4545
case {Keyword.get(opts, :store_key), Keyword.get(opts, :store_name, Store)} do
46-
{nil, _} -> %{}
46+
{nil, _} ->
47+
%{}
48+
4749
{store_key, store_name} ->
4850
case Store.get(store_name, store_key) do
4951
{:ok, stored_state} -> stored_state
@@ -64,7 +66,9 @@ defmodule AgentForge.Runtime do
6466
{:ok, result, final_state} ->
6567
# Update store if needed
6668
case {Keyword.get(opts, :store_key), Keyword.get(opts, :store_name, Store)} do
67-
{nil, _} -> {:ok, result, final_state}
69+
{nil, _} ->
70+
{:ok, result, final_state}
71+
6872
{store_key, store_name} ->
6973
Store.put(store_name, store_key, final_state)
7074
{:ok, result, final_state}
@@ -88,7 +92,8 @@ defmodule AgentForge.Runtime do
8892
iex> is_function(runtime, 1)
8993
true
9094
"""
91-
@spec configure(Flow.flow(), runtime_options()) :: (Signal.t() -> {:ok, term(), term()} | {:error, term()})
95+
@spec configure(Flow.flow(), runtime_options()) :: (Signal.t() ->
96+
{:ok, term(), term()} | {:error, term()})
9297
def configure(flow, opts \\ []) do
9398
fn signal -> execute(flow, signal, opts) end
9499
end
@@ -111,12 +116,13 @@ defmodule AgentForge.Runtime do
111116
true
112117
"""
113118
@spec configure_stateful(Flow.flow(), runtime_options()) ::
114-
(Signal.t() -> {:ok, term(), term()} | {:error, term()})
119+
(Signal.t() -> {:ok, term(), term()} | {:error, term()})
115120
def configure_stateful(flow, opts \\ []) do
116121
# Generate a unique store name if not provided
117-
store_name = Keyword.get_lazy(opts, :store_name, fn ->
118-
:"store_#{:crypto.strong_rand_bytes(4) |> Base.encode16(case: :lower)}"
119-
end)
122+
store_name =
123+
Keyword.get_lazy(opts, :store_name, fn ->
124+
:"store_#{:crypto.strong_rand_bytes(4) |> Base.encode16(case: :lower)}"
125+
end)
120126

121127
# Generate a unique store key if not provided
122128
opts =
@@ -135,6 +141,7 @@ defmodule AgentForge.Runtime do
135141
{:error, {:already_started, _pid}} -> configure(flow, opts)
136142
error -> error
137143
end
144+
138145
_pid ->
139146
configure(flow, opts)
140147
end

lib/agent_forge/signal.ex

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@ defmodule AgentForge.Signal do
55
"""
66

77
@type t :: %{
8-
type: atom(),
9-
data: term(),
10-
meta: %{
11-
source: String.t() | nil,
12-
timestamp: DateTime.t() | nil,
13-
trace_id: String.t() | nil,
14-
correlation_id: String.t() | nil,
15-
custom: map()
16-
}
17-
}
8+
type: atom(),
9+
data: term(),
10+
meta: %{
11+
source: String.t() | nil,
12+
timestamp: DateTime.t() | nil,
13+
trace_id: String.t() | nil,
14+
correlation_id: String.t() | nil,
15+
custom: map()
16+
}
17+
}
1818

1919
@type signal_result ::
20-
{:emit, t()} |
21-
{:emit_many, [t()]} |
22-
{:halt, term()} |
23-
:skip
20+
{:emit, t()}
21+
| {:emit_many, [t()]}
22+
| {:halt, term()}
23+
| :skip
2424

2525
@doc """
2626
Creates a new signal with the given type and data.
@@ -115,10 +115,11 @@ defmodule AgentForge.Signal do
115115
true
116116
"""
117117
def emit_many(signals) when is_list(signals) do
118-
{:emit_many, Enum.map(signals, fn
119-
{type, data} -> new(type, data)
120-
{type, data, meta} -> new(type, data, meta)
121-
end)}
118+
{:emit_many,
119+
Enum.map(signals, fn
120+
{type, data} -> new(type, data)
121+
{type, data, meta} -> new(type, data, meta)
122+
end)}
122123
end
123124

124125
@doc """

lib/agent_forge/store.ex

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,12 @@ defmodule AgentForge.Store do
9292

9393
@impl true
9494
def handle_cast({:update, key, default, fun}, state) do
95-
value = case Map.fetch(state, key) do
96-
{:ok, current} -> fun.(current)
97-
:error -> fun.(default)
98-
end
95+
value =
96+
case Map.fetch(state, key) do
97+
{:ok, current} -> fun.(current)
98+
:error -> fun.(default)
99+
end
100+
99101
{:noreply, Map.put(state, key, value)}
100102
end
101103

lib/agent_forge/tools.ex

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

mix.exs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,10 @@ defmodule AgentForge.MixProject do
4343
[
4444
{:jason, "~> 1.4"},
4545
{:excoveralls, "~> 0.18", only: :test},
46-
{:yaml_elixir, "~> 2.9"}, # YAML support
47-
{:meck, "~> 0.9", only: :test}, # For mocking in tests
46+
# YAML support
47+
{:yaml_elixir, "~> 2.9"},
48+
# For mocking in tests
49+
{:meck, "~> 0.9", only: :test},
4850
{:ex_doc, "~> 0.29", only: :dev, runtime: false}
4951
]
5052
end
@@ -64,25 +66,25 @@ defmodule AgentForge.MixProject do
6466
extras: ["README.md", "CHANGELOG.md", "LICENSE"] ++ Path.wildcard("guides/*.md"),
6567
extra_section: "GUIDES",
6668
groups_for_extras: [
67-
"Guides": Path.wildcard("guides/*.md")
69+
Guides: Path.wildcard("guides/*.md")
6870
],
6971
groups_for_modules: [
70-
"Core": [
72+
Core: [
7173
AgentForge,
7274
AgentForge.Signal,
7375
AgentForge.Flow,
7476
AgentForge.Store
7577
],
76-
"Primitives": [
78+
Primitives: [
7779
AgentForge.Primitives
7880
],
7981
"Dynamic Flows": [
8082
AgentForge.DynamicFlow
8183
],
82-
"Configuration": [
84+
Configuration: [
8385
AgentForge.Config
8486
],
85-
"Utilities": [
87+
Utilities: [
8688
AgentForge.Debug,
8789
AgentForge.Tools,
8890
AgentForge.Runtime

0 commit comments

Comments
 (0)