refactor: type untrusted Constellation JSON as unknown and narrow
get() returned any, so every downstream field access (data.total,
data.records, data.cursor) was unchecked at the one boundary where
external, untrusted JSON enters the worker — neutralizing the strict
tsconfig for that path. Return unknown and narrow each field at the
call site; this also makes getBacklinks reject a non-string cursor
instead of passing it through.