Currently, artifact type autodetection exists in multiple forms, nearly all of them client-side. The Maven Wagon inspects the deployment URL and makes assumptions. The UI checks file extensions.
Instead, move a more complete set of artifact-inspection logic server-side. Some semblance of this already exists, to a certain degree. For example, ZipToSrampArchiveProvider#accept(ArtifactType) already exists, but is currently used only to determine which module should expand the artifact. But, the concept could be used to define the artifact type based on the new artifact. It would require a hierarchy of sorts where the most "specialized" integrations (Switchyard, RTGov, DTGov, etc.) are considered first. If none of those "accept" the artifact, the next tier (more generic types) are considered.
The logic could be a mix of filename regex, archive inspection (ex: look for switchyard.xml), etc.
This should completely replace all other types of client-side logic.