{"record":{"id":"711066698db8152e","repo":"HKUDS/DeepTutor","slug":"hub-hub-does-not-support-browsing","errorCode":null,"errorMessage":"Hub `{hub}` does not support browsing.","messagePattern":"Hub `(.+?)` does not support browsing\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"deeptutor/api/routers/skills.py","lineNumber":161,"sourceCode":"@router.get(\"/hub/catalog\")\nasync def hub_catalog(hub: str = \"eduhub\", q: str = \"\", limit: int = 50) -> dict[str, object]:\n    \"\"\"Proxy a skill hub's public catalog for the in-app browser.\n\n    The web \"Import from EduHub\" panel renders these rows in DeepTutor's own\n    UI — no embedded iframe, no login — so users can browse, search, and\n    one-click download skills. Returns ``web_url`` (the hub's site origin) so\n    the panel can offer a \"view on EduHub\" link out.\n    \"\"\"\n    import asyncio\n\n    from deeptutor.services.skill.hub import ClawHubProvider, HubError, get_hub_provider\n\n    try:\n        provider = get_hub_provider(hub)\n    except HubError as exc:\n        raise HTTPException(status_code=400, detail=str(exc))\n    if not isinstance(provider, ClawHubProvider):\n        raise HTTPException(status_code=400, detail=f\"Hub `{hub}` does not support browsing.\")\n    try:\n        skills = await asyncio.to_thread(provider.catalog, query=q, limit=limit)\n    except HubError as exc:\n        raise HTTPException(status_code=502, detail=str(exc))\n    return {\"hub\": provider.name, \"web_url\": provider.web_origin, \"skills\": skills}\n\n\n@router.get(\"/hub/detail\")\nasync def hub_detail(slug: str, hub: str = \"eduhub\") -> dict[str, object]:\n    \"\"\"Full metadata + SKILL.md body for one hub skill (browser detail view).\"\"\"\n    import asyncio\n\n    from deeptutor.services.skill.hub import ClawHubProvider, HubError, get_hub_provider\n\n    try:\n        provider = get_hub_provider(hub)\n    except HubError as exc:\n        raise HTTPException(status_code=400, detail=str(exc))","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/skills.py#L143-L179","documentation":"Error \"Hub `{hub}` does not support browsing.\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/skills.py:161 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}