I think the easiest way would be to decorate the JavaScriptStackSource service. Wrap the default implementation with a version which decorates getStack(String name) to return a custom JavaScriptStack implementation.
The custom JavaScriptStack will provide wrappers for: List<Asset> getJavaScriptLibraries(); List<StylesheetLink> getStylesheets(); You'll need to delegate to AssetPathConverter in Asset.toClientURL() and StylesheetLink.getURL() Lots of wrapping but it looks like it's doable.