Canonicalises an instanceKey — the name of ONE browser within an agent session (#3531) — or
returns null for "the single unnamed instance", which is what every pre-#3531 caller means.
Exported because the key is compared in more than one place: the engine's session map, the
resolver's per-stream idempotency sets, and the screencast/audio envelopes a client routes on. If
each normalised for itself, a surface could start a stream under Left and then fail to find it
under left — the key would be case-insensitive in one layer and case-sensitive in the next, which
is the kind of disagreement that only shows up in production with two surfaces open.
Empty and whitespace collapse to null rather than to a distinct '' instance, so a caller that
threads an absent value through as '' lands exactly where it did before the argument existed.
Canonicalises an
instanceKey— the name of ONE browser within an agent session (#3531) — or returnsnullfor "the single unnamed instance", which is what every pre-#3531 caller means.Exported because the key is compared in more than one place: the engine's session map, the resolver's per-stream idempotency sets, and the screencast/audio envelopes a client routes on. If each normalised for itself, a surface could start a stream under
Leftand then fail to find it underleft— the key would be case-insensitive in one layer and case-sensitive in the next, which is the kind of disagreement that only shows up in production with two surfaces open.Empty and whitespace collapse to
nullrather than to a distinct''instance, so a caller that threads an absent value through as''lands exactly where it did before the argument existed.