Spaces:
Running on Zero
Running on Zero
| """Fluxus-compatible feature schema endpoint.""" | |
| from .common import _CHAIN_FEATURES_PATH, _load_yaml | |
| from .error_schema import make_not_found_error, make_validation_error | |
| def handle_get_chain_schema(chain_type: str) -> dict: | |
| if not chain_type: | |
| return make_validation_error( | |
| "Parameter 'chain_type' is required.", | |
| missing_fields=["chain_type"], | |
| ) | |
| chain_features = _load_yaml(_CHAIN_FEATURES_PATH) | |
| resolved = chain_type if chain_type in chain_features else None | |
| if resolved is None: | |
| for feature_name, feature_data in chain_features.items(): | |
| aliases = feature_data.get("chains") | |
| if aliases == chain_type or ( | |
| isinstance(aliases, list) and chain_type in aliases | |
| ): | |
| resolved = feature_name | |
| break | |
| if resolved is None: | |
| return make_not_found_error("chain_type", chain_type) | |
| chain_data = chain_features[resolved] | |
| return { | |
| "feature_name": chain_type, | |
| "canonical_feature_name": resolved, | |
| "chains": chain_data.get("chains", resolved), | |
| "display_name": chain_data.get("display_name", resolved), | |
| "description": chain_data.get("description", ""), | |
| "supported_tasks": chain_data.get("supported_tasks", []), | |
| "max_count": chain_data.get("max_count", 1), | |
| "usage_guideline": chain_data.get("usage_guideline", ""), | |
| "parameters_schema": chain_data.get("parameters_schema", {}), | |
| } | |