The implementation for PEP 675 requires changes to the runtime, typeshed stubs, and type checkers.
The runtime implementation was included in Python 3.11 (and included in the typing_extensions library for backward compatibility).
The typeshed stubs have also been updated to include support for LiteralString.
Only two of the four major type checkers (pyright and pyre) have implemented support for this feature leaving mypy and pytype without support for LiteralString at this time.
It would be good to address them in the PEP itself or any addendum PEP.
PEPs are historical documents, and they are generally not updated after they are accepted. Clarifications and extensions can be made in the official typing specification.
We’ve also been working to write conformance tests for type checkers. You can find the source code for the LiteralString type checker conformance tests here. Some of the cases you’ve mentioned are not currently covered by the conformance test, but they probably should be.
To answer your specific questions…
The specification is very clear that f-strings have the type LiteralString “if and only if its constituent expressions are literal strings”. That doesn’t accommodate other literal types (like literal integers, bytes, enums, etc.).
The spec doesn’t specifically mention the intended behavior of the str constructor. I wouldn’t expect that to ever produce a LiteralString. If you want to create a literal string, you should use a literal string expression form, not call the (dynamic) str constructor.
The spec doesn’t specifically mention the format, ascii or repr functions, so by default I would assume these never return a value of type LiteralString. You may be able to convince the typeshed maintainers that some subset of these should optionally return LiteralString under certain circumstances. If so, an overload could be added.
You asked whether format specifiers are allowed in f-strings. In pyright’s implementation (which I wrote), I interpreted the spec to mean that an f-string that uses only literal strings (even if in a format specifier) should be treated as a LiteralString. In all other cases, it’s treated as a regular str. That means, for example, if you use a non-literal str or a non-string literal, the f-string type becomes str. Here is an example in the pyright playground.