proteinea / src /lib /tool-mapping.ts
Mahmoud Eljendy
feat: Antibody Studio — AI-native antibody design workspace by Proteinea
30cc31a
/**
* Two registries live here:
*
* 1. TOOL_NAME_MAP (below) — demo engine short names → Hub endpoint names.
* Some of these target endpoints that are NOT yet registered on the live
* Hub (`hub-api.hound-bass.ts.net/api/registry/tools`). They'll start
* resolving as the build pipeline ships those images. Until then the
* mapping is aspirational for those lines (marked `NOT LIVE`).
*
* 2. LIVE_HUB_ENDPOINTS — a build-time SNAPSHOT of Hub endpoints (may drift). The tools page
* Hub as of 2026-04-16. Exported so the UI can browse / chip / plan
* against real, runnable tools (including Proteinea's proprietary Fc
* receptor panel, Ankh, RaGene, CRPS Fc-DMS, Boltz, RosettaFold3).
*/
/** Maps demo engine short tool names → Hub endpoint names */
export const TOOL_NAME_MAP: Record<string, string> = {
// ---- Design tools (research-reproduction catalog, not yet live on Hub) ----
"RFdiffusion": "design/rfantibody", // NOT LIVE
"ProteinMPNN": "design/proteinmpnn", // NOT LIVE
"ColabDesign": "design/colabdesign", // NOT LIVE
"BindCraft": "design/bindcraft", // NOT LIVE
"AntiFold": "design/antifold", // NOT LIVE
"EvoProtGrad": "design/evoprotgrad", // NOT LIVE
"AbMPNN": "design/abmpnn", // NOT LIVE
"IgLM": "design/iglm", // NOT LIVE
"Germinal": "design/germinal", // NOT LIVE
"mBER": "design/mber", // NOT LIVE
"Mosaic": "design/mosaic", // NOT LIVE
// ---- Structure prediction — pointed at REAL live endpoints where possible ----
"AF2": "structure/alphafold", // LIVE
"Chai-1": "structure/parallel_chai", // LIVE
"Boltz": "structure/boltz", // LIVE
"RF3": "structure/rosettafold3", // LIVE (RosettaFold3)
"RF2": "structure/rosettafold3", // LIVE — best available RF-family endpoint
"MSA": "structure/msa_generation", // LIVE
"ESMFold": "structure/esmfold", // NOT LIVE (in tools.yaml, not deployed)
"ABodyBuilder3":"structure/abodybuilder3", // NOT LIVE
"Protenix": "structure/protenix", // NOT LIVE
// ---- Sequence generation & fitness — LIVE proprietary stack ----
"Ankh": "fitness/ankh_sequence_generation", // LIVE — Proteinea PLM
"D3PM": "fitness/d3pm_sequence_generation", // LIVE
"InverseFold": "fitness/inverse_fold_d3pm", // LIVE (D3PM inverse fold)
"ESM-Fc": "fitness/esm_predictions_fc", // LIVE
"GP-Fc": "fitness/gp_predictions_fc", // LIVE
"CRPS-Fc-DMS": "fitness/crps_fc_dms_binding", // LIVE
"CRPS-ESM": "fitness/crps_esm_ensemble", // LIVE
// ---- Fc receptor panel — LIVE proprietary binders ----
"FcgR2A": "fc/human_fcgr2a_131r_binding_v1.1", // LIVE
"FcgR2B": "fc/human_fcgr2b_binding_v1.1", // LIVE
"FcRn-pH6": "fc/human_fcrn_ph6_binding_v1.1", // LIVE — half-life
"FcRn-pH7": "fc/human_fcrn_ph7_binding_v1.1", // LIVE — release kinetics
"Fc-Convert": "fc/human_fc_format_converter", // LIVE
// ---- MD validation — LIVE ----
"MD-Validate": "md/physical_validation", // LIVE
"MD-Bench": "md/benchmarking", // LIVE
// ---- Scoring tools (build-catalog, not yet live) ----
"DeepImmuno": "scoring/deepimmuno", // NOT LIVE
"pDockQ2": "scoring/pdockq2", // NOT LIVE
"PyRosetta": "scoring/pyrosetta_scoring", // NOT LIVE
"ThermoMPNN": "scoring/thermompnn", // NOT LIVE
"ProteinMPNN-ddG": "scoring/proteinmpnn_ddg", // NOT LIVE
"NetSolP": "scoring/netsolp", // NOT LIVE
"DeepStabP": "scoring/deepstabp", // NOT LIVE
// ---- Analysis tools ----
"ANARCI": "analysis/anarci", // NOT LIVE
"Agmata": "agonist/agmata", // LIVE — aggregation propensity
"Agmata-Δ": "agonist/agmata-delta", // LIVE
"PTM": "quality/ptm", // LIVE — post-translational modification QC
"Struct-Filter":"sa/structural_filtration", // LIVE
};
/**
* Live Hub endpoints (2026-04-16), grouped by namespace.
* Source of truth: https://hub-api.hound-bass.ts.net/api/registry/tools
*
* Use these for category chips, plan-proposal tools, and browser surfaces.
* Anything not listed here is NOT runnable right now.
*/
export const LIVE_HUB_ENDPOINTS = {
fc: [
"fc/human_fc_format_converter",
"fc/human_fcgr2a_131r_binding_v1.1",
"fc/human_fcgr2b_binding_v1.1",
"fc/human_fcrn_ph6_binding_v1.0",
"fc/human_fcrn_ph6_binding_v1.1",
"fc/human_fcrn_ph7_binding_v1.0",
"fc/human_fcrn_ph7_binding_v1.1",
"fc/id_creation",
"fc/undo_id_creation",
],
fitness: [
"fitness/ankh_sequence_generation",
"fitness/cfm_generation",
"fitness/conditional_autoencoder_generation",
"fitness/crps_esm_ensemble",
"fitness/crps_fc_dms_binding",
"fitness/d3pm_sequence_generation",
"fitness/esm_predictions_fc",
"fitness/fc_canine_bind_rank",
"fitness/fold_to_seq_gen",
"fitness/gp_predictions_fc",
"fitness/inverse_fold_d3pm",
"fitness/inverse_fold_d3pm_single",
"fitness/multinomial_diffusion_generation",
"fitness/scbd_generation",
"fitness/wj_sequence_generation",
],
structure: [
"structure/alphafold",
"structure/alphafold-old",
"structure/boltz",
"structure/msa_generation",
"structure/parallel_chai",
"structure/rosettafold3",
],
ragene: [
"ragene/inference/list_models",
"ragene/inference/v2",
"ragene/inference/v3",
"ragene/inference/v4",
"ragene/inference/v5",
"ragene/train/v2",
"ragene/train/v3",
"ragene/train/v4",
"ragene/train/v5",
],
training: [
"training/cfm_training",
"training/conditional_autoencoder_training",
"training/d3pm_model_training",
"training/denoise_bytenet_training",
"training/multinomial_diffusion_training",
"training/scbd_training",
],
md: [
"md/benchmarking",
"md/optimized_standard",
"md/physical_validation",
],
agonist: ["agonist/agmata", "agonist/agmata-delta"],
analysis: ["analysis/generative_benchmark", "analysis/regression_benchmark"],
misc: [
"fep/glycoprotein",
"generation/brute_force",
"botied/scores",
"sa/structural_filtration",
"quality/ptm",
],
} as const;
/** Human-readable labels for each namespace. Used by the tool browser UI. */
export const LIVE_HUB_CATEGORY_LABELS: Record<keyof typeof LIVE_HUB_ENDPOINTS, string> = {
fc: "Fc receptor panel",
fitness: "Sequence generation & fitness",
structure: "Structure prediction",
ragene: "RaGene",
training: "Model training",
md: "Molecular dynamics",
agonist: "Aggregation",
analysis: "Benchmarks",
misc: "Other",
};
/** Flat list of all runnable live-Hub endpoint names (2026-04-16). */
export const LIVE_HUB_ENDPOINT_LIST: string[] = Object.values(LIVE_HUB_ENDPOINTS).flat();
/** Is this endpoint currently live on the Hub? */
export function isLiveHubEndpoint(endpoint: string): boolean {
return LIVE_HUB_ENDPOINT_LIST.includes(endpoint);
}
/**
* Resolve a short tool name to its Hub API endpoint name.
* Falls back to lowercase if the name is not in the map.
*/
export function resolveToolEndpoint(shortName: string): string {
return TOOL_NAME_MAP[shortName] ?? shortName.toLowerCase();
}