Reads mj-app.json from repoDir and returns the packages a process of tier should
load: shared libraries first (entities/actions register on import), then the tier's own
packages, with each startupExport carried through. Returns null when there is no
manifest, and throws only when a manifest exists but is not valid JSON — a corrupt file is
a problem the operator must see, an absent one is the common case.
Reads
mj-app.jsonfromrepoDirand returns the packages a process oftiershould load:sharedlibraries first (entities/actions register on import), then the tier's own packages, with eachstartupExportcarried through. Returnsnullwhen there is no manifest, and throws only when a manifest exists but is not valid JSON — a corrupt file is a problem the operator must see, an absent one is the common case.