Decision model
The port every closed question goes through.
type DecisionModel interface {
Decide(context.Context, DecisionRequest) (DecisionResponse, error)
}A request carries a state document and a map of named questions. Each answer carries the chosen option with its probabilities, or a noul value between 0 and 1. model/decisions implements it against a decisions endpoint configured by BLUECOLLAR_DECISION_ENDPOINT, BLUECOLLAR_DECISION_API_KEY and BLUECOLLAR_DECISION_MODEL. Tool selection splits a catalog too large for one request into byte-balanced batches that never ask about a tool twice.