L’API HTTP d’agents de Mastra retourne une structure JSON avec des steps, chacune
contenant des elements content types comme reasoning, tool-call, tool-result et
text. La sortie brute est dense. Commencez par l’explorer:
# Appeler l'API et voir la structure brute
http localhost:4111/api/agents/weather-agent/generate \
messages[0]="what's the weather in montreal?" | jq .
# Obtenir uniquement la reponse finale
http localhost:4111/api/agents/weather-agent/generate \
messages[0]="what's the weather in montreal?" | jq -r '.text'
# Explorer ce qui se trouve dans les steps
http localhost:4111/api/agents/weather-agent/generate \
messages[0]="what's the weather in montreal?" | jq '.steps[].content[] | .type'
# "reasoning"
# "tool-call"
# "tool-result"
# "text"
# "reasoning"
# "text"
# Voir quels champs chaque type possede
http localhost:4111/api/agents/weather-agent/generate \
messages[0]="what's the weather in montreal?" | jq '.steps[].content[] | select(.type == "tool-call")'
Une fois la structure comprise, passez dans jq -r avec des sequences d’echappement
ANSI en ligne pour coloriser chaque element:
http localhost:4111/api/agents/weather-agent/generate \
messages[0]="what's the weather in montreal?" | jq -r '
(
.steps[]
| .content[]
| select(.type != "tool-result" and .type != "text")
| if .type == "tool-call" then
"\u001b[35m<\(.type)>\(.text // .toolName)</\(.type)>\u001b[0m"
else
"\u001b[90m<\(.type)>\(.text // .toolName)</\(.type)>\u001b[0m"
end
),
"\n\n\u001b[32mAssistant: \(.text)\u001b[0m"
'
Les sequences \u001b[Xm sont des codes de couleur ANSI: 35 est magenta pour les
appels d’outils, 90 est gris fonce pour le raisonnement, 32 est vert pour la reponse
finale. jq les affiche litteralement en mode brut (-r), et le terminal les rend en
couleurs. Le filtre utilise .text // .toolName pour gerer les elements de contenu qui
stockent leur label dans differents champs selon le type.