The solution I used in JSON::Tiny is to have separate rules for the different literal values:
proto token value {*};
token value:sym<true> { <sym> };
token value:sym<false> { <sym> };
token value:sym<null> { <sym> };
...
And then in the action class, have one method per literal:
method value:sym<true>($/) { make Bool::True }
method value:sym<false>($/) { make Bool::False }
method value:sym<null>($/) { make Any }
But the key is, as already mentioned by duelafn, to create the right object in the action directly, and not try to post-press the made value later on.