Packages
A Fair Source multi-agent runtime with deterministic agent scoring and replayable run history.
Retired package: Deprecated - superseded — operator console moved to the Syntropy app
Current section
Files
Jump to
Current section
Files
lib/syntropy_web/controllers/api/recommendation_json.ex
defmodule SyntropyWeb.Api.RecommendationJSON do
@moduledoc false
@spec recommendation(map()) :: map()
def recommendation(recommendation) do
%{
id: recommendation.id,
node_id: Map.get(recommendation, :node_id, "local"),
kind: recommendation.kind,
risk_level: recommendation.risk_level,
approval_required: recommendation.approval_required,
candidate_agent_ids: recommendation.candidate_agent_ids,
candidate_agents:
get_in(recommendation, [:evidence, :candidate_agents]) ||
agent_refs(recommendation.candidate_agent_ids),
evidence: recommendation.evidence,
status: recommendation.status,
applied_agent_id: recommendation.applied_agent_id,
created_at: DateTime.to_iso8601(recommendation.created_at)
}
end
defp agent_refs(agent_ids) do
Enum.map(agent_ids, fn runtime_id ->
case Syntropy.ClusterInfo.parse_runtime_id(runtime_id) do
{:ok, ref} -> ref
:error -> %{id: runtime_id, runtime_id: runtime_id, node_id: "local"}
end
end)
end
end