hunk.code_window: }
   export const GridItem = ({ children, item, index, ...props }: Props) => {
   	const explorer = useExplorerContext();
   	const explorerView = useExplorerViewContext();
   	const dragSelect = useDragSelectContext();
   	const cutCopyState = useSelector(explorerStore, (s) => s.cutCopyState);
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit: 	const { currentIndex, maxIndex } = useRoutingContext();
   	const os = useOperatingSystem();
   	const navigate = useNavigate();
  
hunk.file_path: interface/app/$libraryId/Explorer/View/Grid/Item.tsx
hunk.type: add
file: use rspc::alpha::AlphaRouter;
  
  use super::{Ctx, R};
  
  pub(crate) fn mount() -> AlphaRouter<Ctx> {
  	R.router().procedure("image_detection.list", {
  		R.query(
  			|_, _: ()| -> std::result::Result<Vec<&'static str>, rspc::Error> {
  				#[cfg(not(feature = "ai"))]
  				return Err(rspc::Error::new(
  					rspc::ErrorCode::MethodNotSupported,
  					"AI feature is not available".to_string(),
  				));
  
  				#[cfg(feature = "ai")]
  				{
  					use sd_ai::image_labeler::{Model, YoloV8};
  					Ok(YoloV8::versions())
  				}
  			},
  		)
  	})
  }
  