Services
LLLM services expose tactics through FastAPI.
The portable path is:
POST /run
GET /info
POST /stream
/run accepts either an envelope:
{
"input": {"text": "hello"},
"context": {"trace_id": "demo"}
}
or raw app JSON when preserving an existing client shape:
{"text": "hello"}
Service errors use stable envelopes so callers can inspect type, message,
tactic, endpoint, and request_id without scraping framework text.