The User-Agent the engine sends for value: the raw value is checked first
(headerValueProblem: no control character other than tab, nothing above
U+00FF), so "\n" or "\u3000" is a FitConnectValidationError
(Invalid userAgent: ...) even though trim() would blank it. Then undefined,
an empty or a whitespace-only value falls back to the default: a blank
User-Agent is semantically equivalent to none and would trip the Routing API's
bot detection (403). The CLI's --user-agent parser applies the same rule.
The User-Agent the engine sends for
value: the raw value is checked first (headerValueProblem: no control character other than tab, nothing above U+00FF), so"\n"or"\u3000"is a FitConnectValidationError (Invalid userAgent: ...) even thoughtrim()would blank it. Then undefined, an empty or a whitespace-only value falls back to the default: a blank User-Agent is semantically equivalent to none and would trip the Routing API's bot detection (403). The CLI's--user-agentparser applies the same rule.